Index: sendserver.c =================================================================== RCS file: /source/radiusclient/lib/sendserver.c,v retrieving revision 1.27 diff -u -r1.27 sendserver.c --- sendserver.c 23 Mar 2010 15:19:27 -0000 1.27 +++ sendserver.c 23 Mar 2010 20:10:42 -0000 @@ -259,18 +259,20 @@ sinremote.sin_port = htons ((unsigned short) data->svc_port); /* - * Fill in NAS-IP-Address + * Fill in NAS-IP-Address (if needed) */ - if (sinlocal.sin_addr.s_addr == htonl(INADDR_ANY)) { - if (rc_get_srcaddr(SA(&sinlocal), SA(&sinremote)) != 0) { - close (sockfd); - memset (secret, '\0', sizeof (secret)); - return ERROR_RC; + if (rc_avpair_get(data->send_pairs, PW_NAS_IP_ADDRESS, 0) == NULL) { + if (sinlocal.sin_addr.s_addr == htonl(INADDR_ANY)) { + if (rc_get_srcaddr(SA(&sinlocal), SA(&sinremote)) != 0) { + close (sockfd); + memset (secret, '\0', sizeof (secret)); + return ERROR_RC; + } } + nas_ipaddr = ntohl(sinlocal.sin_addr.s_addr); + rc_avpair_add(rh, &(data->send_pairs), PW_NAS_IP_ADDRESS, + &nas_ipaddr, 0, 0); } - nas_ipaddr = ntohl(sinlocal.sin_addr.s_addr); - rc_avpair_add(rh, &(data->send_pairs), PW_NAS_IP_ADDRESS, - &nas_ipaddr, 0, 0); /* Build a request */ auth = (AUTH_HDR *) send_buffer;