wininet: Store WININETFTPSESSIONW pointer in WININETFTPFILEW.

This commit is contained in:
Jacek Caban 2006-10-29 18:55:15 +01:00 committed by Alexandre Julliard
parent 51ba292716
commit 550ffef212
3 changed files with 17 additions and 9 deletions

View File

@ -1008,7 +1008,7 @@ HINTERNET FTP_FtpOpenFileW(LPWININETFTPSESSIONW lpwfs,
{ {
INT nDataSocket; INT nDataSocket;
BOOL bSuccess = FALSE; BOOL bSuccess = FALSE;
LPWININETFILE lpwh = NULL; LPWININETFTPFILE lpwh = NULL;
LPWININETAPPINFOW hIC = NULL; LPWININETAPPINFOW hIC = NULL;
HINTERNET handle = NULL; HINTERNET handle = NULL;
@ -1033,7 +1033,7 @@ HINTERNET FTP_FtpOpenFileW(LPWININETFTPSESSIONW lpwfs,
/* Get data socket to server */ /* Get data socket to server */
if (bSuccess && FTP_GetDataSocket(lpwfs, &nDataSocket)) if (bSuccess && FTP_GetDataSocket(lpwfs, &nDataSocket))
{ {
lpwh = HeapAlloc(GetProcessHeap(), 0, sizeof(WININETFILE)); lpwh = HeapAlloc(GetProcessHeap(), 0, sizeof(WININETFTPFILE));
lpwh->hdr.htype = WH_HFILE; lpwh->hdr.htype = WH_HFILE;
lpwh->hdr.dwFlags = dwFlags; lpwh->hdr.dwFlags = dwFlags;
lpwh->hdr.dwContext = dwContext; lpwh->hdr.dwContext = dwContext;
@ -1043,6 +1043,9 @@ HINTERNET FTP_FtpOpenFileW(LPWININETFTPSESSIONW lpwfs,
lpwh->hdr.lpfnStatusCB = lpwfs->hdr.lpfnStatusCB; lpwh->hdr.lpfnStatusCB = lpwfs->hdr.lpfnStatusCB;
lpwh->nDataSocket = nDataSocket; lpwh->nDataSocket = nDataSocket;
lpwh->session_deleted = FALSE; lpwh->session_deleted = FALSE;
WININET_AddRef( &lpwfs->hdr );
lpwh->lpFtpSession = lpwfs;
handle = WININET_AllocHandle( &lpwh->hdr ); handle = WININET_AllocHandle( &lpwh->hdr );
if( !handle ) if( !handle )
@ -2800,12 +2803,14 @@ static void FTP_CloseFindNextHandle(LPWININETHANDLEHEADER hdr)
*/ */
static void FTP_CloseFileTransferHandle(LPWININETHANDLEHEADER hdr) static void FTP_CloseFileTransferHandle(LPWININETHANDLEHEADER hdr)
{ {
LPWININETFILE lpwh = (LPWININETFILE) hdr; LPWININETFTPFILE lpwh = (LPWININETFTPFILE) hdr;
LPWININETFTPSESSIONW lpwfs = (LPWININETFTPSESSIONW) lpwh->hdr.lpwhparent; LPWININETFTPSESSIONW lpwfs = lpwh->lpFtpSession;
INT nResCode; INT nResCode;
TRACE("\n"); TRACE("\n");
WININET_Release(&lpwh->lpFtpSession->hdr);
if (!lpwh->session_deleted) if (!lpwh->session_deleted)
lpwfs->download_in_progress = NULL; lpwfs->download_in_progress = NULL;

View File

@ -1703,7 +1703,7 @@ BOOL WINAPI InternetWriteFile(HINTERNET hFile, LPCVOID lpBuffer ,
break; break;
case WH_HFILE: case WH_HFILE:
nSocket = ((LPWININETFILE)lpwh)->nDataSocket; nSocket = ((LPWININETFTPFILE)lpwh)->nDataSocket;
break; break;
default: default:
@ -1745,7 +1745,7 @@ static BOOL INTERNET_ReadFile(LPWININETHANDLEHEADER lpwh, LPVOID lpBuffer,
case WH_HFILE: case WH_HFILE:
/* FIXME: FTP should use NETCON_ stuff */ /* FIXME: FTP should use NETCON_ stuff */
nSocket = ((LPWININETFILE)lpwh)->nDataSocket; nSocket = ((LPWININETFTPFILE)lpwh)->nDataSocket;
if (nSocket != -1) if (nSocket != -1)
{ {
int res = recv(nSocket, lpBuffer, dwNumOfBytesToRead, bWait ? MSG_WAITALL : 0); int res = recv(nSocket, lpBuffer, dwNumOfBytesToRead, bWait ? MSG_WAITALL : 0);

View File

@ -202,22 +202,25 @@ typedef struct
} WININETHTTPREQW, *LPWININETHTTPREQW; } WININETHTTPREQW, *LPWININETHTTPREQW;
struct _WININETFTPSESSIONW;
typedef struct typedef struct
{ {
WININETHANDLEHEADER hdr; WININETHANDLEHEADER hdr;
struct _WININETFTPSESSIONW *lpFtpSession;
BOOL session_deleted; BOOL session_deleted;
int nDataSocket; int nDataSocket;
} WININETFILE, *LPWININETFILE; } WININETFTPFILE, *LPWININETFTPFILE;
typedef struct typedef struct _WININETFTPSESSIONW
{ {
WININETHANDLEHEADER hdr; WININETHANDLEHEADER hdr;
WININETAPPINFOW *lpAppInfo; WININETAPPINFOW *lpAppInfo;
int sndSocket; int sndSocket;
int lstnSocket; int lstnSocket;
int pasvSocket; /* data socket connected by us in case of passive FTP */ int pasvSocket; /* data socket connected by us in case of passive FTP */
LPWININETFILE download_in_progress; LPWININETFTPFILE download_in_progress;
struct sockaddr_in socketAddress; struct sockaddr_in socketAddress;
struct sockaddr_in lstnSocketAddress; struct sockaddr_in lstnSocketAddress;
LPWSTR lpszPassword; LPWSTR lpszPassword;