X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Fradius%2Fsendserver.c;h=0c0ef30f8d37f41309cc395a9d3fad5153130f08;hb=4087ec556b1ccee15d8e97153f3800b79982f8ba;hp=3612b8d57a88a8f291bd8b84635c5838f7390b09;hpb=4abe4296f0eddbb2b6ff11dbbd27100156c85f87;p=ppp.git diff --git a/pppd/plugins/radius/sendserver.c b/pppd/plugins/radius/sendserver.c index 3612b8d..0c0ef30 100644 --- a/pppd/plugins/radius/sendserver.c +++ b/pppd/plugins/radius/sendserver.c @@ -244,7 +244,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info) sin = (struct sockaddr_in *) & salocal; memset ((char *) sin, '\0', (size_t) length); sin->sin_family = AF_INET; - sin->sin_addr.s_addr = htonl(INADDR_ANY); + sin->sin_addr.s_addr = htonl(rc_own_bind_ipaddress()); sin->sin_port = htons ((unsigned short) 0); if (bind (sockfd, (struct sockaddr *) sin, length) < 0 || getsockname (sockfd, (struct sockaddr *) sin, &length) < 0) @@ -302,7 +302,7 @@ int rc_send_server (SEND_DATA *data, char *msg, REQUEST_INFO *info) FD_SET (sockfd, &readfds); if (select (sockfd + 1, &readfds, NULL, NULL, &authtime) < 0) { - if (errno == EINTR) + if (errno == EINTR && !got_sigterm) continue; error("rc_send_server: select: %m"); memset (secret, '\0', sizeof (secret));