]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
move encode/decode for proxies to their own fields
authorAlan T. DeKok <aland@freeradius.org>
Wed, 31 Mar 2021 12:47:58 +0000 (08:47 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 2 Apr 2021 19:12:23 +0000 (15:12 -0400)
src/include/listen.h
src/main/listen.c
src/main/process.c

index c5b45f0a7e9c83ea1d9f473c4467663e808330cd..2d830168821af4514d55122ab889a974e8bcf7f0 100644 (file)
@@ -87,6 +87,8 @@ struct rad_listen {
        rad_listen_send_t send;
        rad_listen_encode_t encode;
        rad_listen_decode_t decode;
+       rad_listen_encode_t proxy_encode;
+       rad_listen_decode_t proxy_decode;
        rad_listen_print_t print;
 
        CONF_SECTION const *cs;
index 5b9fd287d59c8f1a0973e63c5a95b53c58287b90..ad9b8fe3d146cf9961d4810110da2dd9e3232106 100644 (file)
@@ -2790,8 +2790,14 @@ static rad_listen_t *listen_alloc(TALLOC_CTX *ctx, RAD_LISTEN_TYPE type)
        this->recv = master_listen[this->type].recv;
        this->send = master_listen[this->type].send;
        this->print = master_listen[this->type].print;
-       this->encode = master_listen[this->type].encode;
-       this->decode = master_listen[this->type].decode;
+
+       if (type != RAD_LISTEN_PROXY) {
+               this->encode = master_listen[this->type].encode;
+               this->decode = master_listen[this->type].decode;
+       } else {
+               this->proxy_encode = master_listen[this->type].encode;
+               this->proxy_decode = master_listen[this->type].decode;
+       }
 
        talloc_set_destructor(this, _listener_free);
 
index 8098b81bc1d8f7f151efdb6604c02adb43cc2cae..4e98b88a1f45f341903fa1fef789837e0820c5e2 100644 (file)
@@ -2486,7 +2486,7 @@ static int process_proxy_reply(REQUEST *request, RADIUS_PACKET *reply)
                 *      Decode the packet if required.
                 */
                if (request->proxy_listener) {
-                       rcode = request->proxy_listener->decode(request->proxy_listener, request);
+                       rcode = request->proxy_listener->proxy_decode(request->proxy_listener, request);
                        debug_packet(request, reply, true);
 
                        /*
@@ -3453,7 +3453,7 @@ static int request_proxy(REQUEST *request)
        /*
         *      Encode the packet before we do anything else.
         */
-       request->proxy_listener->encode(request->proxy_listener, request);
+       request->proxy_listener->proxy_encode(request->proxy_listener, request);
        debug_packet(request, request->proxy, false);
 
        /*
@@ -4468,7 +4468,7 @@ static void request_coa_originate(REQUEST *request)
        /*
         *      Encode the packet before we do anything else.
         */
-       coa->proxy_listener->encode(coa->proxy_listener, coa);
+       coa->proxy_listener->proxy_encode(coa->proxy_listener, coa);
        debug_packet(coa, coa->proxy, false);
 
 #ifdef DEBUG_STATE_MACHINE