]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
some listeners may be read-only
authorAlan T. DeKok <aland@freeradius.org>
Tue, 25 Apr 2023 13:46:32 +0000 (09:46 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 25 Apr 2023 13:46:32 +0000 (09:46 -0400)
src/lib/io/listen.h
src/lib/io/network.c
src/listen/detail/proto_detail_file.c

index d1d42ef955ddd7f25ecd0317fb306f077af5c144..c4c3e540077a6db694cf33cca9262509431af911 100644 (file)
@@ -41,6 +41,8 @@ struct fr_listen {
 
        bool                    connected;              //!< is this for a connected socket?
        bool                    track_duplicates;       //!< do we track duplicate packets?
+       bool                    read_only;              //!< sometimes we don't need to do writes
+
        size_t                  default_message_size;   //!< copied from app_io, but may be changed
        size_t                  num_messages;           //!< for the message ring buffer
 };
index 7eac95e99415949827849f0a1ad3864485c7f540..9040e18dcf9a460549015c2780c51928e4105454 100644 (file)
@@ -1357,7 +1357,7 @@ static int fr_network_listen_add_self(fr_network_t *nr, fr_listen_t *listen)
 
        if (fr_event_fd_insert(nr, nr->el, s->listen->fd,
                               fr_network_read,
-                              fr_network_write,
+                              s->listen->read_only ? NULL : fr_network_write,
                               fr_network_error,
                               s) < 0) {
                PERROR("Failed adding new socket to network event loop");
index 9b474e715427f39747b8af32f6462625cc1d1ea7..2a0d25bd813627a046da9936b22d564119517ea9 100644 (file)
@@ -155,6 +155,8 @@ static int mod_open(fr_listen_t *li)
        thread->vnode_fd = -1;
        pthread_mutex_init(&thread->worker_mutex, NULL);
 
+       li->read_only = true;
+
        return 0;
 }