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-Tag: release_3_0_24~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=251408ba82efc61d1742a1eb678659b4e9918025;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 c5b45f0a7e9..2d830168821 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 19d22a24fd3..705b5699642 100644 --- a/src/main/listen.c +++ b/src/main/listen.c @@ -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); diff --git a/src/main/process.c b/src/main/process.c index da2b614e080..d1d03ac771a 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -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