[Pkg-gnupg-commit] [libassuan] 424/437: w32: Fix assuan_connect_fd

Eric Dorland eric at moszumanska.debian.org
Fri May 22 05:34:12 UTC 2015


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository libassuan.

commit 91a98e2c812dccd73c57badd02da7642e0421c8e
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Jan 28 09:47:40 2015 +0100

    w32: Fix assuan_connect_fd
    
    * src/assuan-socket-connect.c (assuan_socket_connect_fd): Map fd to
    assuan_fd_t.
    --
    
    This function is actually not used by GnuPG.  The function should have
    taken an assuan_fd but given that it did not we use our usual mapping
    from Windows libc fds to an assuan fd.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>
---
 src/assuan-socket-connect.c | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c
index cb8f9d0..49d3f72 100644
--- a/src/assuan-socket-connect.c
+++ b/src/assuan-socket-connect.c
@@ -35,7 +35,7 @@
 #ifdef HAVE_W32_SYSTEM
 # ifdef HAVE_WINSOCK2_H
 #  include <winsock2.h>
-# endif 
+# endif
 # include <windows.h>
 #else
 # include <sys/socket.h>
@@ -78,7 +78,7 @@
 
 /* Returns true if STR represents a valid port number in decimal
    notation and no garbage is following.  */
-static int 
+static int
 parse_portno (const char *str, uint16_t *r_port)
 {
   unsigned int value;
@@ -98,7 +98,8 @@ parse_portno (const char *str, uint16_t *r_port)
 
 
 static gpg_error_t
-_assuan_connect_finalize(assuan_context_t ctx, int fd, unsigned int flags)
+_assuan_connect_finalize (assuan_context_t ctx, assuan_fd_t fd,
+                          unsigned int flags)
 {
   gpg_error_t err;
 
@@ -148,11 +149,15 @@ gpg_error_t
 assuan_socket_connect_fd (assuan_context_t ctx, int fd, unsigned int flags)
 {
   gpg_error_t err;
+  assuan_fd_t afd;
 
   if (!ctx || fd < 0)
     return GPG_ERR_INV_ARG;
+  afd = assuan_fd_from_posix_fd (fd);
+  if (afd == ASSUAN_INVALID_FD)
+    return GPG_ERR_INV_ARG;
 
-  err = _assuan_connect_finalize(ctx, fd, flags);
+  err = _assuan_connect_finalize(ctx, afd, flags);
 
   if (err)
     _assuan_reset (ctx);
@@ -177,7 +182,7 @@ assuan_socket_connect_fd (assuan_context_t ctx, int fd, unsigned int flags)
 
       assuan://<ipaddr>:<port>
       assuan://[<ip6addr>]:<port>
-         
+
         Connect using TCP to PORT of the server with the numerical
         IPADDR.  Note that '[' and ']' are literal characters.
 
@@ -242,7 +247,9 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
   else
     {
       char *addrstr, *p;
+#ifdef HAVE_INET_PTON
       void *addrbuf = NULL;
+#endif
 
       addrstr = _assuan_malloc (ctx, strlen (name) + 1);
       if (!addrstr)
@@ -254,7 +261,7 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
           p = strchr (addrstr, ']');
           if (!p || p[1] != ':' || !parse_portno (p+2, &port))
             err = _assuan_error (ctx, GPG_ERR_BAD_URI);
-          else 
+          else
             {
               *p = 0;
 #ifdef WITH_IPV6
@@ -263,7 +270,9 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
               memset (&srvr_addr_in6, 0, sizeof srvr_addr_in6);
               srvr_addr_in6.sin6_family = af;
               srvr_addr_in6.sin6_port = htons (port);
+#ifdef HAVE_INET_PTON
               addrbuf = &srvr_addr_in6.sin6_addr;
+#endif
               srvr_addr = (struct sockaddr *)&srvr_addr_in6;
               len = sizeof srvr_addr_in6;
 #else
@@ -283,7 +292,9 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
               memset (&srvr_addr_in, 0, sizeof srvr_addr_in);
               srvr_addr_in.sin_family = af;
               srvr_addr_in.sin_port = htons (port);
+#ifdef HAVE_INET_PTON
               addrbuf = &srvr_addr_in.sin_addr;
+#endif
               srvr_addr = (struct sockaddr *)&srvr_addr_in;
               len = sizeof srvr_addr_in;
             }
@@ -308,12 +319,12 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
             err = _assuan_error (ctx, GPG_ERR_BAD_URI);
 #endif /*!HAVE_INET_PTON*/
         }
-      
+
       _assuan_free (ctx, addrstr);
       if (err)
         return err;
     }
-  
+
   fd = _assuan_sock_new (ctx, pf, SOCK_STREAM, 0);
   if (fd == ASSUAN_INVALID_FD)
     {
@@ -330,8 +341,8 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
       _assuan_close (ctx, fd);
       return _assuan_error (ctx, GPG_ERR_ASS_CONNECT_FAILED);
     }
- 
-  err = _assuan_connect_finalize(ctx, fd, flags);
+
+  err = _assuan_connect_finalize (ctx, fd, flags);
 
   if (err)
     _assuan_reset (ctx);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libassuan.git



More information about the Pkg-gnupg-commit mailing list