]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
always use protocol size, even for do_not_respond
authorAlan T. DeKok <aland@freeradius.org>
Wed, 27 Jan 2021 19:34:49 +0000 (14:34 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 27 Jan 2021 19:34:49 +0000 (14:34 -0500)
we rely on proto_foo encode() to look at request->reply->code,
and then do "the right thing" to signal it's own write() layer
that we're not replying.

src/lib/io/worker.c

index 2d65c2293d6b95addcb2f2b9185a0f80fa438c1d..a66fbb14c9101a3a1f61f5126ab8f944362234a4 100644 (file)
@@ -864,7 +864,7 @@ nak:
  */
 static void worker_run_request(fr_worker_t *worker, fr_time_t start)
 {
-       ssize_t size = 0;
+       ssize_t size;
        rlm_rcode_t final;
        request_t *request;
        fr_time_t now;
@@ -911,7 +911,6 @@ redo:
                /*
                 *      Done: don't send a reply.
                 */
-               size = 1;
                break;
 
        case RLM_MODULE_FAIL:
@@ -919,7 +918,6 @@ redo:
                /*
                 *      Something went wrong.  It's done, but we don't send a reply.
                 */
-               size = 1;
                break;
 
        case RLM_MODULE_YIELD:
@@ -932,9 +930,6 @@ redo:
                 *      Don't reply to internally generated request.
                 */
                if (request->parent || request->async->fake) break;
-
-               size = request->async->listen->app_io->default_reply_size;
-               if (!size) size = request->async->listen->app_io->default_message_size;
                break;
        }
 
@@ -962,6 +957,9 @@ redo:
                (void) rbtree_deletebydata(worker->dedup, request);
        }
 
+       size = request->async->listen->app_io->default_reply_size;
+       if (!size) size = request->async->listen->app_io->default_message_size;
+
        now = fr_time();
        worker_send_reply(worker, request, size, now);
        now = fr_time();