[exim-cvs] Fix udpsend and ip_connectedsocket().

Top Page
Delete this message
Reply to this message
Author: Exim Git Commits Mailing List
Date:  
To: exim-cvs
Subject: [exim-cvs] Fix udpsend and ip_connectedsocket().
Gitweb: http://git.exim.org/exim.git/commitdiff/a6d4c44ef48936ac169cd0da7ea149cbc81c9716
Commit:     a6d4c44ef48936ac169cd0da7ea149cbc81c9716
Parent:     315e209ab63a4d198d4592247cabf52b9401844d
Author:     Tony Finch <dot@???>
AuthorDate: Thu Jun 5 18:01:11 2014 +0100
Committer:  Tony Finch <dot@???>
CommitDate: Thu Jun 5 18:01:11 2014 +0100


    Fix udpsend and ip_connectedsocket().


    The ip_connectedsocket() function's socket type support and error
    reporting did not work properly.
---
 doc/doc-txt/ChangeLog |    3 +++
 src/src/ip.c          |   14 ++++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)


diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 93c163c..606c820 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -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
-----------------
diff --git a/src/src/ip.c b/src/src/ip.c
index 0211adc..1d4e368 100644
--- a/src/src/ip.c
+++ b/src/src/ip.c
@@ -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;