Fix udpsend and ip_connectedsocket(). exim-4_83_RC2
authorTony Finch <dot@dotat.at>
Thu, 5 Jun 2014 17:01:11 +0000 (18:01 +0100)
committerTony Finch <dot@dotat.at>
Thu, 5 Jun 2014 17:01:11 +0000 (18:01 +0100)
The ip_connectedsocket() function's socket type support and error
reporting did not work properly.

doc/doc-txt/ChangeLog
src/src/ip.c

index 93c163cdce8ff655fc0c48586c6faa4baf8b8d35..606c8201f999d4683414c60d6fb0794c6d59e66d 100644 (file)
@@ -132,6 +132,9 @@ JH/25 Expand the coverage of the delivery $host and $host_address to
 JH/26 Port service names are now accepted for tls_on_connect_ports, to
       align with daemon_smtp_ports.  Bug 72.
 
+TF/03 Fix udpsend. The ip_connectedsocket() function's socket type
+      support and error reporting did not work properly.
+
 
 Exim version 4.82
 -----------------
index 0211adc1e2087a331ce7f513fd0ef4918db1aa6d..1d4e368ecce4a7d102ad3311aa8947831ac2eac7 100644 (file)
@@ -248,8 +248,14 @@ return -1;
 }
 
 
+
+/*************************************************
+*    Create connected socket to remote host      *
+*************************************************/
+
 /* Create a socket and connect to host (name or number, ipv6 ok)
    at one of port-range.
+
 Arguments:
   type          SOCK_DGRAM or SOCK_STREAM
   af            AF_INET6 or AF_INET for the socket type
@@ -317,8 +323,8 @@ else
 for (h = &shost; h != NULL; h = h->next)
   {
   fd = (Ustrchr(h->address, ':') != 0)
-    ? (fd6 < 0) ? (fd6 = ip_socket(SOCK_STREAM, af = AF_INET6)) : fd6
-    : (fd4 < 0) ? (fd4 = ip_socket(SOCK_STREAM, af = AF_INET )) : fd4;
+    ? (fd6 < 0) ? (fd6 = ip_socket(type, af = AF_INET6)) : fd6
+    : (fd4 < 0) ? (fd4 = ip_socket(type, af = AF_INET )) : fd4;
 
   if (fd < 0)
     {
@@ -340,8 +346,8 @@ for (h = &shost; h != NULL; h = h->next)
       }
   }
 
-*errstr = string_sprintf("failed to connect to "
-  "%s: couldn't connect to any host", hostname, strerror(errno));
+*errstr = string_sprintf("failed to connect to %s: "
+  "couldn't connect to any host: %s", hostname, strerror(errno));
 
 bad:
   close(fd4); close(fd6); return -1;