Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
b38ebe30
Commit
b38ebe30
authored
Oct 13, 2000
by
Mark Andrews
Browse files
514. [func] Retry refresh and notify queries if they timeout.
[RT
#388
]
parent
78bdbbac
Changes
2
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
b38ebe30
514. [func] Retry refresh and notify queries if they timeout.
[RT #388]
513. [func] New functionality added to rdnc and server to allow
individual zones to be refreshed ore reloaded.
...
...
lib/dns/zone.c
View file @
b38ebe30
...
...
@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: zone.c,v 1.23
0
2000/10/1
2 21:51:55 mws
Exp $ */
/* $Id: zone.c,v 1.23
1
2000/10/1
3 13:23:09 marka
Exp $ */
#include
<config.h>
...
...
@@ -148,6 +148,7 @@ struct dns_zone {
#endif
/* NOMINUM_PUBLIC */
unsigned
int
masterscnt
;
unsigned
int
curmaster
;
unsigned
int
refreshcnt
;
isc_sockaddr_t
masteraddr
;
dns_notifytype_t
notifytype
;
isc_sockaddr_t
*
notify
;
...
...
@@ -261,6 +262,7 @@ struct dns_notify {
dns_request_t
*
request
;
dns_name_t
ns
;
isc_sockaddr_t
dst
;
unsigned
int
attempt
;
ISC_LINK
(
dns_notify_t
)
link
;
};
...
...
@@ -468,6 +470,7 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
#endif
/* NOMINUM_PUBLIC */
zone
->
masterscnt
=
0
;
zone
->
curmaster
=
0
;
zone
->
refreshcnt
=
0
;
zone
->
notify
=
NULL
;
zone
->
notifytype
=
dns_notifytype_yes
;
zone
->
notifycnt
=
0
;
...
...
@@ -1823,6 +1826,7 @@ dns_zone_refresh(dns_zone_t *zone) {
zone
->
retry
=
ISC_MIN
(
zone
->
retry
*
2
,
6
*
3600
);
zone
->
curmaster
=
0
;
zone
->
refreshcnt
=
0
;
/* initiate soa query */
queue_soa_query
(
zone
);
}
...
...
@@ -2113,6 +2117,7 @@ notify_create(isc_mem_t *mctx, dns_notify_t **notifyp) {
notify
->
request
=
NULL
;
isc_sockaddr_any
(
&
notify
->
dst
);
dns_name_init
(
&
notify
->
ns
,
NULL
);
notify
->
attempt
=
0
;
ISC_LINK_INIT
(
notify
,
link
);
notify
->
magic
=
NOTIFY_MAGIC
;
*
notifyp
=
notify
;
...
...
@@ -2763,6 +2768,7 @@ stub_callback(isc_task_t *task, isc_event_t *event) {
isc_event_free
(
&
event
);
dns_request_destroy
(
&
zone
->
request
);
zone
->
curmaster
++
;
zone
->
refreshcnt
=
0
;
if
(
exiting
||
zone
->
curmaster
>=
zone
->
masterscnt
)
{
zone
->
flags
&=
~
DNS_ZONEFLG_REFRESH
;
...
...
@@ -2832,6 +2838,13 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
if
(
revent
->
result
!=
ISC_R_SUCCESS
)
{
zone_log
(
zone
,
me
,
ISC_LOG_INFO
,
"failure for %s: %s"
,
master
,
dns_result_totext
(
revent
->
result
));
if
(
revent
->
result
==
ISC_R_TIMEDOUT
&&
!
dns_request_usedtcp
(
revent
->
request
))
{
if
(
zone
->
refreshcnt
<
3
)
goto
same_master
;
zone_log
(
zone
,
me
,
ISC_LOG_INFO
,
"%s: retries exceeded"
,
master
);
}
goto
next_master
;
}
...
...
@@ -3018,6 +3031,7 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
isc_event_free
(
&
event
);
dns_request_destroy
(
&
zone
->
request
);
zone
->
curmaster
++
;
zone
->
refreshcnt
=
0
;
if
(
zone
->
curmaster
>=
zone
->
masterscnt
)
{
zone
->
flags
&=
~
DNS_ZONEFLG_REFRESH
;
if
(
DNS_ZONE_FLAG
(
zone
,
DNS_ZONEFLG_NEEDREFRESH
))
{
...
...
@@ -3033,6 +3047,7 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
return
;
same_master:
zone
->
refreshcnt
++
;
if
(
msg
!=
NULL
)
dns_message_destroy
(
&
msg
);
LOCK
(
&
zone
->
lock
);
...
...
@@ -4183,7 +4198,16 @@ notify_done(isc_task_t *task, isc_event_t *event) {
dns_message_destroy
(
&
message
);
isc_event_free
(
&
event
);
notify_destroy
(
notify
,
ISC_FALSE
);
if
(
result
==
ISC_R_TIMEDOUT
&&
notify
->
attempt
<
3
)
{
notify
->
attempt
++
;
dns_request_destroy
(
&
notify
->
request
);
notify_send_queue
(
notify
);
}
else
{
if
(
result
==
ISC_R_TIMEDOUT
)
notify_log
(
notify
->
zone
,
ISC_LOG_INFO
,
"NOTIFY to %s: retries exceeded"
,
addrbuf
);
notify_destroy
(
notify
,
ISC_FALSE
);
}
}
isc_result_t
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment