Jacek Caban : wininet: Store handle in WININETHANDLEHEADER and use it in SendCallback.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Oct 30 05:22:30 CST 2006


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Oct 29 18:57:11 2006 +0100

wininet: Store handle in WININETHANDLEHEADER and use it in SendCallback.

---

 dlls/wininet/internet.c |   19 +++----------------
 dlls/wininet/internet.h |    1 +
 dlls/wininet/utility.c  |   13 ++-----------
 3 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 4f2256a..2e653b9 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -151,26 +151,13 @@ HINTERNET WININET_AllocHandle( LPWININET
 end:
     LeaveCriticalSection( &WININET_cs );
 
-    return (HINTERNET) (handle+1);
+    return info->hInternet = (HINTERNET) (handle+1);
 }
 
 HINTERNET WININET_FindHandle( LPWININETHANDLEHEADER info )
 {
-    UINT i, handle = 0;
-
-    EnterCriticalSection( &WININET_cs );
-    for( i=0; i<WININET_dwMaxHandles; i++ )
-    {
-        if( info == WININET_Handles[i] )
-        {
-            WININET_AddRef( info );
-            handle = i+1;
-            break;
-        }
-    }
-    LeaveCriticalSection( &WININET_cs );
-
-    return (HINTERNET) handle;
+    WININET_AddRef(info);
+    return info->hInternet;
 }
 
 LPWININETHANDLEHEADER WININET_AddRef( LPWININETHANDLEHEADER info )
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index c57cef7..43b1c85 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -139,6 +139,7 @@ typedef void (*WININET_object_destructor
 struct _WININETHANDLEHEADER
 {
     WH_TYPE htype;
+    HINTERNET hInternet;
     DWORD  dwFlags;
     DWORD  dwContext;
     DWORD  dwError;
diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index 7e3ca0f..4f969f8 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -214,7 +214,6 @@ VOID INTERNET_SendCallback(LPWININETHAND
                            DWORD dwInternetStatus, LPVOID lpvStatusInfo,
                            DWORD dwStatusInfoLength)
 {
-    HINTERNET hHttpSession;
     LPVOID lpvNewInfo = NULL;
 
     if( !hdr->lpfnStatusCB )
@@ -225,12 +224,6 @@ VOID INTERNET_SendCallback(LPWININETHAND
     if( !dwContext )
         return;
 
-    hHttpSession = WININET_FindHandle( hdr );
-    if( !hHttpSession ) {
-	TRACE(" Could not convert header '%p' into a handle !\n", hdr);
-        return;
-    }
-
     lpvNewInfo = lpvStatusInfo;
     if(hdr->dwInternalFlags & INET_CALLBACKW) {
         switch(dwInternetStatus) {
@@ -249,18 +242,16 @@ VOID INTERNET_SendCallback(LPWININETHAND
     }
     
     TRACE(" callback(%p) (%p (%p), %08x, %d (%s), %p, %d)\n",
-	  hdr->lpfnStatusCB, hHttpSession, hdr, dwContext, dwInternetStatus, get_callback_name(dwInternetStatus),
+	  hdr->lpfnStatusCB, hdr->hInternet, hdr, dwContext, dwInternetStatus, get_callback_name(dwInternetStatus),
 	  lpvNewInfo, dwStatusInfoLength);
     
-    hdr->lpfnStatusCB(hHttpSession, dwContext, dwInternetStatus,
+    hdr->lpfnStatusCB(hdr->hInternet, dwContext, dwInternetStatus,
                       lpvNewInfo, dwStatusInfoLength);
 
     TRACE(" end callback().\n");
 
     if(lpvNewInfo != lpvStatusInfo)
         HeapFree(GetProcessHeap(), 0, lpvNewInfo);
-
-    WININET_Release( hdr );
 }
 
 




More information about the wine-cvs mailing list