diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c index cf37ac80861..9be0e74f7de 100644 --- a/dlls/wininet/ftp.c +++ b/dlls/wininet/ftp.c @@ -1728,6 +1728,9 @@ HINTERNET FTP_Connect(LPWININETAPPINFOW hIC, LPCWSTR lpszServerName, lpwfs->hdr.lpfnStatusCB = hIC->hdr.lpfnStatusCB; lpwfs->download_in_progress = NULL; + WININET_AddRef( &hIC->hdr ); + lpwfs->lpAppInfo = hIC; + handle = WININET_AllocHandle( &lpwfs->hdr ); if( !handle ) { @@ -2685,6 +2688,8 @@ static void FTP_CloseSessionHandle(LPWININETHANDLEHEADER hdr) TRACE("\n"); + WININET_Release(&lpwfs->lpAppInfo->hdr); + if (lpwfs->download_in_progress != NULL) lpwfs->download_in_progress->session_deleted = TRUE; diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h index de53717fa9c..6d2e85725ad 100644 --- a/dlls/wininet/internet.h +++ b/dlls/wininet/internet.h @@ -213,6 +213,7 @@ typedef struct typedef struct { WININETHANDLEHEADER hdr; + WININETAPPINFOW *lpAppInfo; int sndSocket; int lstnSocket; int pasvSocket; /* data socket connected by us in case of passive FTP */