]> 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>
Thu, 22 Jul 2021 13:55:18 +0000 (09:55 -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 19d22a24fd3104904baf219b25633ffbb140da7e..705b56996422019a7b4918c3a8b3ec662d75ac2d 100644 (file)
@@ -2827,8 +2827,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 da2b614e0806cb1f2689ff172c04905956c38f59..d1d03ac771aad39a3bfa0749bda6e02c1ff3f252 100644 (file)
@@ -2491,7 +2491,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);
 
                        /*
@@ -3458,7 +3458,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);
 
        /*
@@ -4483,7 +4483,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