]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Slow down log frequency of write wait failures.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Thu, 1 Sep 2022 12:00:29 +0000 (14:00 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Thu, 1 Sep 2022 12:00:29 +0000 (14:00 +0200)
doc/Changelog
util/netevent.c

index b3f532698a5e9c940bfb175f06d2f1d58c711c93..6c627a68a0f7ad3b0456d7a291a8e93fa4d6ba7e 100644 (file)
@@ -1,6 +1,7 @@
 1 September 2022: Wouter
        - Fix to update config tests to fix checking if nonblocking sockets
          work on OpenBSD.
+       - Slow down log frequency of write wait failures.
 
 31 August 2022: Wouter
        - Fix to avoid process wide fcntl calls mixed with nonblocking
index 9c5fb3af368359c527528c74304ff71974c90ca8..de707885187f64b9d913c2d6843616c1ea48d4f3 100644 (file)
@@ -140,6 +140,8 @@ struct internal_base {
        int slow_accept_enabled;
        /** last log time for slow logging of file descriptor errors */
        time_t last_slow_log;
+       /** last log time for slow logging of write wait failures */
+       time_t last_writewait_log;
 };
 
 /**
@@ -416,8 +418,13 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet,
 #  endif
                                if(pret == 0) {
                                        /* timer expired */
-                                       verbose(VERB_OPS, "send udp blocked "
-                                               "for long, dropping packet.");
+                                       struct comm_base* b = c->ev->base;
+                                       if(b->eb->last_writewait_log+SLOW_LOG_TIME <=
+                                               b->eb->secs) {
+                                               b->eb->last_writewait_log = b->eb->secs;
+                                               verbose(VERB_OPS, "send udp blocked "
+                                                       "for long, dropping packet.");
+                                       }
                                        return 0;
                                } else if(pret < 0 &&
 #ifndef USE_WINSOCK
@@ -652,8 +659,13 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet,
 #  endif
                                if(pret == 0) {
                                        /* timer expired */
-                                       verbose(VERB_OPS, "send udp blocked "
-                                               "for long, dropping packet.");
+                                       struct comm_base* b = c->ev->base;
+                                       if(b->eb->last_writewait_log+SLOW_LOG_TIME <=
+                                               b->eb->secs) {
+                                               b->eb->last_writewait_log = b->eb->secs;
+                                               verbose(VERB_OPS, "send udp blocked "
+                                                       "for long, dropping packet.");
+                                       }
                                        return 0;
                                } else if(pret < 0 &&
 #ifndef USE_WINSOCK