[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