rad_listen_recv_t recv;
rad_listen_send_t send;
+
+ /*
+ * We don't need a proxy_recv, because the main loop in
+ * process.c calls listener->recv(), and we don't know
+ * what kind of packet we're receiving until we receive
+ * it.
+ */
+ rad_listen_send_t proxy_send;
+
+
rad_listen_encode_t encode;
rad_listen_decode_t decode;
rad_listen_encode_t proxy_encode;
static int proxy_socket_send(rad_listen_t *listener, REQUEST *request)
{
rad_assert(request->proxy_listener == listener);
- rad_assert(listener->send == proxy_socket_send);
+ rad_assert(listener->proxy_send == proxy_socket_send);
if (rad_send(request->proxy, NULL,
request->home_server->secret) < 0) {
this->encode = master_listen[this->type].encode;
this->decode = master_listen[this->type].decode;
} else {
+ this->proxy_send = master_listen[this->type].send;
this->proxy_encode = master_listen[this->type].encode;
this->proxy_decode = master_listen[this->type].decode;
}
}
this->recv = proxy_tls_recv;
- this->send = proxy_tls_send;
+ this->proxy_send = proxy_tls_send;
}
#endif
#endif
/*
* And send the packet.
*/
- request->proxy_listener->send(request->proxy_listener, request);
+ request->proxy_listener->proxy_send(request->proxy_listener, request);
return 1;
}