Add PQsetClientEncoding(conn, "SQL_ASCII") to the pgsql module.
[exim.git] / src / src / smtp_out.c
index fc90c251166acdc3defa42d2736b2d398b91f16e..6b079c16f25920cc69a966861db8423359a1b67d 100644 (file)
@@ -1,10 +1,10 @@
-/* $Cambridge: exim/src/src/smtp_out.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/smtp_out.c,v 1.7 2006/02/07 11:19:00 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2004 */
+/* Copyright (c) University of Cambridge 1995 - 2006 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 /* A number of functions for driving outgoing SMTP calls. */
@@ -155,12 +155,13 @@ non-IPv6 systems, to enable the code to be less messy. However, on such systems
 host->address will always be an IPv4 address.
 
 The port field in the host item is used if it is set (usually router from SRV
-records). In other cases, the default passed as an argument is used.
+records or elsewhere). In other cases, the default passed as an argument is
+used, and the host item is updated with its value.
 
 Arguments:
   host        host item containing name and address (and sometimes port)
   host_af     AF_INET or AF_INET6
-  port        default, remote port to connect to, in host byte order for those
+  port        default remote port to connect to, in host byte order, for those
                 hosts whose port setting is PORT_NONE
   interface   outgoing interface address or NULL
   timeout     timeout value or 0
@@ -184,6 +185,7 @@ if (host->port != PORT_NONE)
       host->port);
   port = host->port;
   }
+else host->port = port;    /* Set the port actually used */
 
 HDEBUG(D_transport|D_acl|D_v)
   {
@@ -223,8 +225,14 @@ else if (ip_connect(sock, host_af, host->address, port, timeout) < 0)
 
 if (save_errno != 0)
   {
-  HDEBUG(D_transport|D_acl|D_v) debug_printf("failed\n");
-  close(sock);
+  HDEBUG(D_transport|D_acl|D_v)
+    {
+    debug_printf("failed: %s", CUstrerror(save_errno));
+    if (save_errno == ETIMEDOUT)
+      debug_printf(" (timeout=%s)", readconf_printtime(timeout));
+    debug_printf("\n");
+    }
+  (void)close(sock);
   errno = save_errno;
   return -1;
   }