Jacek Caban : wininet: Use WSAGetLastError in sock_get_error in Windows builds.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 12 10:13:40 CST 2015


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Feb 11 19:37:37 2015 +0100

wininet: Use WSAGetLastError in sock_get_error in Windows builds.

---

 dlls/wininet/ftp.c           |  2 +-
 dlls/wininet/internet.h      |  2 +-
 dlls/wininet/netconnection.c | 23 +++++++++++------------
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c
index 3be5af6..a28865f 100644
--- a/dlls/wininet/ftp.c
+++ b/dlls/wininet/ftp.c
@@ -1239,7 +1239,7 @@ static DWORD FTPFILE_WriteFile(object_header_t *hdr, const void *buffer, DWORD s
     res = sock_send(lpwh->nDataSocket, buffer, size, 0);
 
     *written = res>0 ? res : 0;
-    return res >= 0 ? ERROR_SUCCESS : sock_get_error(errno);
+    return res >= 0 ? ERROR_SUCCESS : sock_get_error();
 }
 
 static void FTP_ReceiveRequestData(ftp_file_t *file, BOOL first_notif)
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index 49f7bf5..b0a0db5 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -459,7 +459,7 @@ BOOL NETCON_is_alive(netconn_t*) DECLSPEC_HIDDEN;
 LPCVOID NETCON_GetCert(netconn_t *connection) DECLSPEC_HIDDEN;
 int NETCON_GetCipherStrength(netconn_t*) DECLSPEC_HIDDEN;
 DWORD NETCON_set_timeout(netconn_t *connection, BOOL send, DWORD value) DECLSPEC_HIDDEN;
-int sock_get_error(int) DECLSPEC_HIDDEN;
+int sock_get_error(void) DECLSPEC_HIDDEN;
 int sock_send(int fd, const void *msg, size_t len, int flags) DECLSPEC_HIDDEN;
 int sock_recv(int fd, void *msg, size_t len, int flags) DECLSPEC_HIDDEN;
 
diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index debc271..7695e14 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -328,7 +328,7 @@ static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD t
         result = connect(netconn->socket, (struct sockaddr*)&server->addr, server->addr_len);
         if(result == -1)
         {
-            if (sock_get_error(errno) == WSAEINPROGRESS) {
+            if (sock_get_error() == WSAEINPROGRESS) {
                 struct pollfd pfd;
                 int res;
 
@@ -442,10 +442,12 @@ void NETCON_unload(void)
 }
 
 /* translate a unix error code into a winsock one */
-int sock_get_error( int err )
+int sock_get_error(void)
 {
-#if !defined(__MINGW32__) && !defined (_MSC_VER)
-    switch (err)
+#if defined(__MINGW32__) || defined(_MSC_VER)
+    return WSAGetLastError();
+#else
+    switch (errno)
     {
         case EINTR:             return WSAEINTR;
         case EBADF:             return WSAEBADF;
@@ -502,10 +504,9 @@ int sock_get_error( int err )
 #ifdef EREMOTE
         case EREMOTE:           return WSAEREMOTE;
 #endif
-    default: errno=err; perror("sock_set_error"); return WSAEFAULT;
+    default: perror("sock_get_error"); return WSAEFAULT;
     }
 #endif
-    return err;
 }
 
 int sock_send(int fd, const void *msg, size_t len, int flags)
@@ -771,9 +772,7 @@ DWORD NETCON_send(netconn_t *connection, const void *msg, size_t len, int flags,
     if(!connection->secure)
     {
 	*sent = sock_send(connection->socket, msg, len, flags);
-	if (*sent == -1)
-	    return sock_get_error(errno);
-        return ERROR_SUCCESS;
+        return *sent == -1 ? sock_get_error() : ERROR_SUCCESS;
     }
     else
     {
@@ -948,7 +947,7 @@ DWORD NETCON_recv(netconn_t *connection, void *buf, size_t len, blocking_mode_t
 
         set_socket_blocking(connection->socket, mode);
 	*recvd = sock_recv(connection->socket, buf, len, flags);
-	return *recvd == -1 ? sock_get_error(errno) :  ERROR_SUCCESS;
+	return *recvd == -1 ? sock_get_error() :  ERROR_SUCCESS;
     }
     else
     {
@@ -1103,8 +1102,8 @@ DWORD NETCON_set_timeout(netconn_t *connection, BOOL send, DWORD value)
                         sizeof(tv));
     if (result == -1)
     {
-        WARN("setsockopt failed (%s)\n", strerror(errno));
-        return sock_get_error(errno);
+        WARN("setsockopt failed\n");
+        return sock_get_error();
     }
     return ERROR_SUCCESS;
 }




More information about the wine-cvs mailing list