svn commit: r197621 - head/lib/libradius

Alexander Motin mav at FreeBSD.org
Tue Sep 29 19:09:17 UTC 2009


Author: mav
Date: Tue Sep 29 19:09:17 2009
New Revision: 197621
URL: http://svn.freebsd.org/changeset/base/197621

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

Modified:
  head/lib/libradius/radlib.c

Modified: head/lib/libradius/radlib.c
==============================================================================
--- head/lib/libradius/radlib.c	Tue Sep 29 18:44:34 2009	(r197620)
+++ head/lib/libradius/radlib.c	Tue Sep 29 19:09:17 2009	(r197621)
@@ -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-all mailing list