Module: wine Branch: master Commit: f0dde6b673905f2229ca09c9e153ac879b614c6d URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0dde6b673905f2229ca09c9e1...
Author: Juan Lang juan.lang@gmail.com Date: Thu Jul 9 10:55:18 2009 -0700
wininet: Simplify GetAddress when using getaddrinfo.
---
dlls/wininet/utility.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c index 2c443bf..e2eee46 100644 --- a/dlls/wininet/utility.c +++ b/dlls/wininet/utility.c @@ -187,17 +187,21 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort, TRACE("failed to get address of %s (%s)\n", debugstr_w(lpszServerName), 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( psa, 0, sizeof(struct sockaddr_in) ); - memcpy( &((struct sockaddr_in *)psa)->sin_addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr) ); - ((struct sockaddr_in *)psa)->sin_family = res->ai_family; - ((struct sockaddr_in *)psa)->sin_port = htons(nServerPort); + *sa_len = res->ai_addrlen; + memcpy( psa, res->ai_addr, res->ai_addrlen ); + /* Copy port */ + switch (res->ai_family) + { + case AF_INET: + ((struct sockaddr_in *)psa)->sin_port = htons(nServerPort); + break; + }
freeaddrinfo( res ); #else