svn commit: r198675 - stable/7/lib/libradius

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


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

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/7/lib/libradius/   (props changed)
  stable/7/lib/libradius/radlib.c

Modified: stable/7/lib/libradius/radlib.c
==============================================================================
--- stable/7/lib/libradius/radlib.c	Fri Oct 30 13:02:08 2009	(r198674)
+++ stable/7/lib/libradius/radlib.c	Fri Oct 30 13:03:08 2009	(r198675)
@@ -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