]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
it helps to clear the set of writable FDs
authorAlan T. DeKok <aland@freeradius.org>
Mon, 29 Jul 2024 20:37:59 +0000 (16:37 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 29 Jul 2024 20:39:36 +0000 (16:39 -0400)
src/lib/event.c

index 0d926adcf1ee2dd856661982faee6709b4561637..c44441803baee644b7e7a4d33d9f5cbfd35b0a2e 100644 (file)
@@ -514,7 +514,11 @@ int fr_event_fd_write_handler(fr_event_list_t *el, int type, int fd,
                fr_assert(ctx = el->readers[i].ctx);
                el->readers[i].write_handler = write_handler;
 
-               FD_SET(fd, &el->write_fds); /* fd MUST already be in the set of readers! */
+               if (write_handler) {
+                       FD_SET(fd, &el->write_fds); /* fd MUST already be in the set of readers! */
+               }  else {
+                       FD_CLR(fd, &el->write_fds);
+               }
                return 1;
        }
 #endif /* HAVE_KQUEUE */