svn commit: r198674 - stable/8/lib/libradius

Alexander Motin mav at FreeBSD.org
Fri Oct 30 13:02:09 UTC 2009


Author: mav
Date: Fri Oct 30 13:02:08 2009
New Revision: 198674
URL: http://svn.freebsd.org/changeset/base/198674

Log:
  MFC rev. 197621:
  Fix bug, when RADIUS client gave up after single sendto() error, do not
  trying backup servers.
  
  PR:		kern/103764, misc/139214

Modified:
  stable/8/lib/libradius/   (props changed)
  stable/8/lib/libradius/radlib.c

Modified: stable/8/lib/libradius/radlib.c
==============================================================================
--- stable/8/lib/libradius/radlib.c	Fri Oct 30 12:59:22 2009	(r198673)
+++ stable/8/lib/libradius/radlib.c	Fri Oct 30 13:02:08 2009	(r198674)
@@ -650,17 +650,12 @@ rad_continue_send_request(struct rad_han
 	n = sendto(h->fd, h->out, h->out_len, 0,
 	    (const struct sockaddr *)&h->servers[h->srv].addr,
 	    sizeof h->servers[h->srv].addr);
-	if (n != h->out_len) {
-		if (n == -1)
-			generr(h, "sendto: %s", strerror(errno));
-		else
-			generr(h, "sendto: short write");
-		return -1;
-	}
-
+	if (n != h->out_len)
+		tv->tv_sec = 1; /* Do not wait full timeout if send failed. */
+	else
+		tv->tv_sec = h->servers[h->srv].timeout;
 	h->try++;
 	h->servers[h->srv].num_tries++;
-	tv->tv_sec = h->servers[h->srv].timeout;
 	tv->tv_usec = 0;
 	*fd = h->fd;
 


More information about the svn-src-stable mailing list