Jacek Caban : wininet: Directly return error status fro HTTP_HttpEndRequest .

Alexandre Julliard julliard at winehq.org
Thu Dec 3 10:29:54 CST 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Dec  3 14:49:29 2009 +0100

wininet: Directly return error status fro HTTP_HttpEndRequest.

---

 dlls/wininet/http.c |   39 +++++++++++++++++++--------------------
 1 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index ccdb6d1..0aa78b5 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -3701,20 +3701,19 @@ static void AsyncHttpSendRequestProc(WORKREQUEST *workRequest)
 }
 
 
-static BOOL HTTP_HttpEndRequestW(http_request_t *lpwhr, DWORD dwFlags, DWORD_PTR dwContext)
+static DWORD HTTP_HttpEndRequestW(http_request_t *lpwhr, DWORD dwFlags, DWORD_PTR dwContext)
 {
-    BOOL rc = FALSE;
     INT responseLen;
     DWORD dwBufferSize;
     INTERNET_ASYNC_RESULT iar;
-    DWORD res;
+    DWORD res = ERROR_SUCCESS;
 
     INTERNET_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext,
                   INTERNET_STATUS_RECEIVING_RESPONSE, NULL, 0);
 
     responseLen = HTTP_GetResponseHeaders(lpwhr, TRUE);
-    if (responseLen)
-        rc = TRUE;
+    if (!responseLen)
+        res = ERROR_HTTP_HEADER_NOT_FOUND;
 
     INTERNET_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext,
                   INTERNET_STATUS_RESPONSE_RECEIVED, &responseLen, sizeof(DWORD));
@@ -3742,16 +3741,14 @@ static BOOL HTTP_HttpEndRequestW(http_request_t *lpwhr, DWORD dwFlags, DWORD_PTR
                 HTTP_DrainContent(lpwhr);
                 if ((new_url = HTTP_GetRedirectURL( lpwhr, szNewLocation )))
                 {
+                    BOOL rc;
                     INTERNET_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext, INTERNET_STATUS_REDIRECT,
                                           new_url, (strlenW(new_url) + 1) * sizeof(WCHAR));
                     rc = HTTP_HandleRedirect(lpwhr, new_url);
-                    if (rc) {
+                    if (rc)
                         res = HTTP_HttpSendRequestW(lpwhr, NULL, 0, NULL, 0, 0, TRUE);
-                        if(res != ERROR_SUCCESS) {
-                            rc = FALSE;
-                            INTERNET_SetLastError(res);
-                        }
-                    }
+                    else
+                        res = INTERNET_GetLastError();
                     HeapFree( GetProcessHeap(), 0, new_url );
                 }
             }
@@ -3759,12 +3756,12 @@ static BOOL HTTP_HttpEndRequestW(http_request_t *lpwhr, DWORD dwFlags, DWORD_PTR
     }
 
     iar.dwResult = (DWORD_PTR)lpwhr->hdr.hInternet;
-    iar.dwError = rc ? 0 : INTERNET_GetLastError();
+    iar.dwError = res;
 
     INTERNET_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext,
                           INTERNET_STATUS_REQUEST_COMPLETE, &iar,
                           sizeof(INTERNET_ASYNC_RESULT));
-    return rc;
+    return res;
 }
 
 /***********************************************************************
@@ -3814,14 +3811,14 @@ static void AsyncHttpEndRequestProc(WORKREQUEST *work)
 BOOL WINAPI HttpEndRequestW(HINTERNET hRequest,
         LPINTERNET_BUFFERSW lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
 {
-    BOOL rc = FALSE;
     http_request_t *lpwhr;
+    DWORD res;
 
     TRACE("-->\n");
 
     if (lpBuffersOut)
     {
-        INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
+        SetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
     }
 
@@ -3829,7 +3826,7 @@ BOOL WINAPI HttpEndRequestW(HINTERNET hRequest,
 
     if (NULL == lpwhr || lpwhr->hdr.htype != WH_HHTTPREQ)
     {
-        INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
+        SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
         if (lpwhr)
             WININET_Release( &lpwhr->hdr );
         return FALSE;
@@ -3849,14 +3846,16 @@ BOOL WINAPI HttpEndRequestW(HINTERNET hRequest,
         request->dwContext = dwContext;
 
         INTERNET_AsyncCall(&work);
-        INTERNET_SetLastError(ERROR_IO_PENDING);
+        res = ERROR_IO_PENDING;
     }
     else
-        rc = HTTP_HttpEndRequestW(lpwhr, dwFlags, dwContext);
+        res = HTTP_HttpEndRequestW(lpwhr, dwFlags, dwContext);
 
     WININET_Release( &lpwhr->hdr );
-    TRACE("%i <--\n",rc);
-    return rc;
+    TRACE("%u <--\n", res);
+    if(res != ERROR_SUCCESS)
+        SetLastError(res);
+    return res == ERROR_SUCCESS;
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list