Jacek Caban : wininet: Moved inet_ntop call to GetAddress.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 16 10:01:21 CST 2015


Module: wine
Branch: master
Commit: 47778f95fa7136a64440dfc9b00b3c4cb5267e9f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=47778f95fa7136a64440dfc9b00b3c4cb5267e9f

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 16 11:16:53 2015 +0100

wininet: Moved inet_ntop call to GetAddress.

---

 dlls/wininet/ftp.c      |  5 ++---
 dlls/wininet/http.c     | 18 ++----------------
 dlls/wininet/internet.c |  2 +-
 dlls/wininet/internet.h |  3 +--
 dlls/wininet/utility.c  |  7 ++++++-
 5 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c
index 05f5d4b..9be3096 100644
--- a/dlls/wininet/ftp.c
+++ b/dlls/wininet/ftp.c
@@ -2447,7 +2447,7 @@ HINTERNET FTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
     socklen_t sock_namelen;
     BOOL bSuccess = FALSE;
     ftp_session_t *lpwfs = NULL;
-    char szaddr[INET_ADDRSTRLEN];
+    char szaddr[INET6_ADDRSTRLEN];
 
     TRACE("%p  Server(%s) Port(%d) User(%s) Paswd(%s)\n",
 	    hIC, debugstr_w(lpszServerName),
@@ -2535,7 +2535,7 @@ HINTERNET FTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
         (LPWSTR) lpszServerName, (strlenW(lpszServerName)+1) * sizeof(WCHAR));
 
     sock_namelen = sizeof(socketAddr);
-    if (!GetAddress(lpszServerName, lpwfs->serverport, (struct sockaddr *)&socketAddr, &sock_namelen))
+    if (!GetAddress(lpszServerName, lpwfs->serverport, (struct sockaddr *)&socketAddr, &sock_namelen, szaddr))
     {
 	INTERNET_SetLastError(ERROR_INTERNET_NAME_NOT_RESOLVED);
         goto lerror;
@@ -2548,7 +2548,6 @@ HINTERNET FTP_Connect(appinfo_t *hIC, LPCWSTR lpszServerName,
         goto lerror;
     }
 
-    inet_ntop(socketAddr.sin_family, &socketAddr.sin_addr, szaddr, sizeof(szaddr));
     SendAsyncCallback(&hIC->hdr, dwContext, INTERNET_STATUS_NAME_RESOLVED,
                       szaddr, strlen(szaddr)+1);
 
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 59c358c..b878cab 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -1852,8 +1852,7 @@ static BOOL HTTP_DealWithProxy(appinfo_t *hIC, http_session_t *session, http_req
 static DWORD HTTP_ResolveName(http_request_t *request)
 {
     server_t *server = request->proxy ? request->proxy : request->server;
-    socklen_t addr_len;
-    void *addr;
+    int addr_len;
 
     if(server->addr_len)
         return ERROR_SUCCESS;
@@ -1864,23 +1863,10 @@ static DWORD HTTP_ResolveName(http_request_t *request)
                           (strlenW(server->name)+1) * sizeof(WCHAR));
 
     addr_len = sizeof(server->addr);
-    if (!GetAddress(server->name, server->port, (struct sockaddr *)&server->addr, &addr_len))
+    if (!GetAddress(server->name, server->port, (SOCKADDR*)&server->addr, &addr_len, server->addr_str))
         return ERROR_INTERNET_NAME_NOT_RESOLVED;
 
-    switch(server->addr.ss_family) {
-    case AF_INET:
-        addr = &((struct sockaddr_in *)&server->addr)->sin_addr;
-        break;
-    case AF_INET6:
-        addr = &((struct sockaddr_in6 *)&server->addr)->sin6_addr;
-        break;
-    default:
-        WARN("unsupported family %d\n", server->addr.ss_family);
-        return ERROR_INTERNET_NAME_NOT_RESOLVED;
-    }
-
     server->addr_len = addr_len;
-    inet_ntop(server->addr.ss_family, addr, server->addr_str, sizeof(server->addr_str));
     INTERNET_SendCallback(&request->hdr, request->hdr.dwContext,
                           INTERNET_STATUS_NAME_RESOLVED,
                           server->addr_str, strlen(server->addr_str)+1);
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index a1e22d6..65bb434 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -3453,7 +3453,7 @@ BOOL WINAPI InternetCheckConnectionW( LPCWSTR lpszUrl, DWORD dwFlags, DWORD dwRe
       socklen_t sa_len = sizeof(saddr);
       int fd;
 
-      if (!GetAddress(hostW, port, (struct sockaddr *)&saddr, &sa_len))
+      if (!GetAddress(hostW, port, (struct sockaddr *)&saddr, &sa_len, NULL))
           goto End;
       init_winsock();
       fd = socket(saddr.ss_family, SOCK_STREAM, 0);
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index 5741d24..2ad414f 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -397,8 +397,7 @@ DWORD HTTP_Connect(appinfo_t*,LPCWSTR,
         LPCWSTR lpszPassword, DWORD dwFlags, DWORD_PTR dwContext,
         DWORD dwInternalFlags, HINTERNET*) DECLSPEC_HIDDEN;
 
-BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
-	struct sockaddr *psa, socklen_t *sa_len) DECLSPEC_HIDDEN;
+BOOL GetAddress(const WCHAR*,INTERNET_PORT,SOCKADDR*,int*,char*) DECLSPEC_HIDDEN;
 
 DWORD get_cookie_header(const WCHAR*,const WCHAR*,WCHAR**) DECLSPEC_HIDDEN;
 DWORD set_cookie(const WCHAR*,const WCHAR*,const WCHAR*,const WCHAR*,DWORD) DECLSPEC_HIDDEN;
diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index 16447e4..dd926dd 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -125,9 +125,10 @@ time_t ConvertTimeString(LPCWSTR asctime)
 }
 
 
-BOOL GetAddress(const WCHAR *name, INTERNET_PORT port, struct sockaddr *psa, socklen_t *sa_len)
+BOOL GetAddress(const WCHAR *name, INTERNET_PORT port, struct sockaddr *psa, int *sa_len, char *addr_str)
 {
     ADDRINFOW *res, hints;
+    void *addr = NULL;
     int ret;
 
     TRACE("%s\n", debugstr_w(name));
@@ -162,13 +163,17 @@ BOOL GetAddress(const WCHAR *name, INTERNET_PORT port, struct sockaddr *psa, soc
     switch (res->ai_family)
     {
     case AF_INET:
+        addr = &((struct sockaddr_in *)psa)->sin_addr;
         ((struct sockaddr_in *)psa)->sin_port = htons(port);
         break;
     case AF_INET6:
+        addr = &((struct sockaddr_in6 *)psa)->sin6_addr;
         ((struct sockaddr_in6 *)psa)->sin6_port = htons(port);
         break;
     }
 
+    if(addr_str)
+        inet_ntop(res->ai_family, addr, addr_str, INET6_ADDRSTRLEN);
     FreeAddrInfoW(res);
     return TRUE;
 }




More information about the wine-cvs mailing list