]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
hoist default_message_size to allow it to be changed dynamically
authorAlan T. DeKok <aland@freeradius.org>
Thu, 22 Jun 2017 14:17:51 +0000 (10:17 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 22 Jun 2017 14:17:51 +0000 (10:17 -0400)
src/lib/io/listen.h
src/lib/io/network.c
src/modules/proto_radius/proto_radius.c

index fd8ff2ad25b117b1ad85b2c227b25a2b80226024..bcba50cb3e283d94bf8981f52fd2bfa0e7c5c730 100644 (file)
@@ -30,6 +30,8 @@ struct fr_listen {
        fr_app_t const          *app;
        void const              *app_instance;
 
+       size_t                  default_message_size;   //!< copied from app_io, but may be changed
+
        fr_io_decode_t          decode;                 //!< Function to decode packet to request (worker)
        fr_io_encode_t          encode;                 //!< Function to encode request to packet (worker)
 };
index d9b075a055f25b9931c3b1fb6aa7e0d2f13242e1..45f1b1e6d96f23b73371ad7a8e834b4f781c9819 100644 (file)
@@ -321,9 +321,9 @@ static void fr_network_read(UNUSED fr_event_list_t *el, int sockfd, UNUSED int f
        fr_log(nr->log, L_DBG, "network read");
 
        if (!s->cd) {
-               cd = (fr_channel_data_t *) fr_message_reserve(s->ms, s->listen->app_io->default_message_size);
+               cd = (fr_channel_data_t *) fr_message_reserve(s->ms, s->listen->default_message_size);
                if (!cd) {
-                       fr_log(nr->log, L_ERR, "Failed allocating message size %zd!", s->listen->app_io->default_message_size);
+                       fr_log(nr->log, L_ERR, "Failed allocating message size %zd!", s->listen->default_message_size);
 
                        /*
                         *      @todo - handle errors via transport callback
@@ -477,7 +477,7 @@ static void fr_network_socket_callback(void *ctx, void const *data, size_t data_
         */
        s->ms = fr_message_set_create(s, MIN_MESSAGES,
                                      sizeof(fr_channel_data_t),
-                                     s->listen->app_io->default_message_size * MIN_MESSAGES);
+                                     s->listen->default_message_size * MIN_MESSAGES);
        if (!s->ms) {
                fr_log(nr->log, L_ERR, "Failed creating message buffers for network IO.");
 
index 9b8ced39fd1727b45255a44d128c6da89c77d24c..43bc6edcef6f951a3d9027657a10758b0df796c8 100644 (file)
@@ -260,6 +260,7 @@ static int mod_open(void *instance, fr_schedule_t *sc, CONF_SECTION *conf)
        listen->app = &proto_radius;
        listen->app_instance = instance;
 
+       listen->default_message_size = listen->app_io->default_message_size;
        listen->encode = mod_encode;
        listen->decode = mod_decode;