winhttp(2/5): Simplify netconn_resolve when using getaddrinfo (take 2)
Juan Lang
juan.lang at gmail.com
Wed Jul 8 12:43:31 CDT 2009
This includes the port number. Thanks Hans!
--Juan
-------------- next part --------------
From 715a85e7d32b6dc53827fb66c7681442d7710836 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Wed, 8 Jul 2009 10:39:10 -0700
Subject: [PATCH 2/5] Simplify netconn_resolve when using getaddrinfo
---
dlls/winhttp/net.c | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/winhttp/net.c b/dlls/winhttp/net.c
index f362a8b..dc45d84 100644
--- a/dlls/winhttp/net.c
+++ b/dlls/winhttp/net.c
@@ -590,17 +590,21 @@ BOOL netconn_resolve( WCHAR *hostnameW, INTERNET_PORT port, struct sockaddr *sa,
TRACE("failed to get address of %s (%s)\n", debugstr_w(hostnameW), gai_strerror(ret));
return FALSE;
}
- if (*sa_len < sizeof(struct sockaddr_in))
+ if (*sa_len < res->ai_addrlen)
{
WARN("address too small\n");
freeaddrinfo( res );
return FALSE;
}
- *sa_len = sizeof(struct sockaddr_in);
- memset( sa, 0, sizeof(struct sockaddr_in) );
- memcpy( &((struct sockaddr_in *)sa)->sin_addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr) );
- ((struct sockaddr_in *)sa)->sin_family = res->ai_family;
- ((struct sockaddr_in *)sa)->sin_port = htons( port );
+ *sa_len = res->ai_addrlen;
+ memcpy( sa, res->ai_addr, res->ai_addrlen );
+ /* Copy port */
+ switch (res->ai_family)
+ {
+ case PF_INET:
+ ((struct sockaddr_in *)sa)->sin_port = htons( port );
+ break;
+ }
freeaddrinfo( res );
#else
--
1.6.3.2
More information about the wine-patches
mailing list