From: Alan T. DeKok Date: Wed, 31 Mar 2021 12:47:58 +0000 (-0400) Subject: move encode/decode for proxies to their own fields X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b487d179e5dada77cdb5fff997b595962603026c;p=thirdparty%2Ffreeradius-server.git move encode/decode for proxies to their own fields --- diff --git a/src/include/listen.h b/src/include/listen.h index c5b45f0a7e..2d83016882 100644 --- a/src/include/listen.h +++ b/src/include/listen.h @@ -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; diff --git a/src/main/listen.c b/src/main/listen.c index 5b9fd287d5..ad9b8fe3d1 100644 --- a/src/main/listen.c +++ b/src/main/listen.c @@ -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); diff --git a/src/main/process.c b/src/main/process.c index 8098b81bc1..4e98b88a1f 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -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