[WS2_32] Set last error on exit on some functions
authorPeter Hater <7element@mail.bg>
Fri, 26 May 2017 11:51:33 +0000 (11:51 +0000)
committerPeter Hater <7element@mail.bg>
Fri, 26 May 2017 11:51:33 +0000 (11:51 +0000)
svn path=/trunk/; revision=74669

reactos/dll/win32/ws2_32/src/socklife.c

index 5b14364..b53bb79 100644 (file)
@@ -59,7 +59,11 @@ bind(IN SOCKET s,
                 WsSockDereference(Socket);
 
                 /* Return Provider Value */
                 WsSockDereference(Socket);
 
                 /* Return Provider Value */
-                if (Status == ERROR_SUCCESS) return Status;
+                if (Status == ERROR_SUCCESS)
+                {
+                    SetLastError(ErrorCode);
+                    return Status;
+                }
 
                 /* If everything seemed fine, then the WSP call failed itself */
                 if (ErrorCode == NO_ERROR) ErrorCode = WSASYSCALLFAILURE;
 
                 /* If everything seemed fine, then the WSP call failed itself */
                 if (ErrorCode == NO_ERROR) ErrorCode = WSASYSCALLFAILURE;
@@ -120,7 +124,11 @@ closesocket(IN SOCKET s)
                 WsSockDereference(Socket);
 
                 /* Return success if everything is OK */
                 WsSockDereference(Socket);
 
                 /* Return success if everything is OK */
-                if (ErrorCode == ERROR_SUCCESS) return ErrorCode;
+                if (ErrorCode == ERROR_SUCCESS)
+                {
+                    SetLastError(ErrorCode);
+                    return ErrorCode;
+                }
             }
         }
         else
             }
         }
         else
@@ -347,6 +355,7 @@ WSAAccept(IN SOCKET s,
                 }
 
                 /* Return */
                 }
 
                 /* Return */
+                SetLastError(ErrorCode);
                 return Status;
             }
         }
                 return Status;
             }
         }
@@ -421,6 +430,7 @@ WSAJoinLeaf(IN SOCKET s,
                 }
 
                 /* Return */
                 }
 
                 /* Return */
+                SetLastError(ErrorCode);
                 return Status;
             }
         }
                 return Status;
             }
         }
@@ -582,6 +592,7 @@ DoLookup:
         {
             /* Add an API reference and return */
             WsSockAddApiReference(Status);
         {
             /* Add an API reference and return */
             WsSockAddApiReference(Status);
+            SetLastError(ErrorCode);
             return Status;
         }
     }
             return Status;
         }
     }