diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c index 2b4093bfa69..31a015768b8 100644 --- a/dlls/wininet/ftp.c +++ b/dlls/wininet/ftp.c @@ -1198,6 +1198,20 @@ BOOL WINAPI FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszN * FALSE on failure * */ +static void AsyncFtpGetFileProc(WORKREQUEST *workRequest) +{ + struct WORKREQ_FTPGETFILEW const *req = &workRequest->u.FtpGetFileW; + LPWININETFTPSESSIONW lpwfs = (LPWININETFTPSESSIONW) workRequest->hdr; + + TRACE("%p\n", lpwfs); + + FTP_FtpGetFileW(lpwfs, req->lpszRemoteFile, + req->lpszNewFile, req->fFailIfExists, + req->dwLocalFlagsAttribute, req->dwFlags, req->dwContext); + HeapFree(GetProcessHeap(), 0, req->lpszRemoteFile); + HeapFree(GetProcessHeap(), 0, req->lpszNewFile); +} + BOOL WINAPI FtpGetFileW(HINTERNET hInternet, LPCWSTR lpszRemoteFile, LPCWSTR lpszNewFile, BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags, DWORD dwContext) @@ -1224,8 +1238,9 @@ BOOL WINAPI FtpGetFileW(HINTERNET hInternet, LPCWSTR lpszRemoteFile, LPCWSTR lps WORKREQUEST workRequest; struct WORKREQ_FTPGETFILEW *req; - workRequest.asyncall = FTPGETFILEW; - workRequest.hdr = WININET_AddRef( &lpwfs->hdr ); + workRequest.asyncall = CALLASYNCPROC; + workRequest.asyncproc = AsyncFtpGetFileProc; + workRequest.hdr = WININET_AddRef( &lpwfs->hdr ); req = &workRequest.u.FtpGetFileW; req->lpszRemoteFile = WININET_strdupW(lpszRemoteFile); req->lpszNewFile = WININET_strdupW(lpszNewFile); diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index e98544c3178..9e946768af8 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -3243,21 +3243,6 @@ static VOID INTERNET_ExecuteWork(void) workRequest.asyncproc(&workRequest); break; - case FTPGETFILEW: - { - struct WORKREQ_FTPGETFILEW *req = &workRequest.u.FtpGetFileW; - LPWININETFTPSESSIONW lpwfs = (LPWININETFTPSESSIONW) workRequest.hdr; - - TRACE("FTPGETFILEW %p\n", lpwfs); - - FTP_FtpGetFileW(lpwfs, req->lpszRemoteFile, - req->lpszNewFile, req->fFailIfExists, - req->dwLocalFlagsAttribute, req->dwFlags, req->dwContext); - HeapFree(GetProcessHeap(), 0, req->lpszRemoteFile); - HeapFree(GetProcessHeap(), 0, req->lpszNewFile); - } - break; - case FTPDELETEFILEW: { struct WORKREQ_FTPDELETEFILEW *req = &workRequest.u.FtpDeleteFileW; diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h index cf02e92c3f7..0938068128d 100644 --- a/dlls/wininet/internet.h +++ b/dlls/wininet/internet.h @@ -250,7 +250,6 @@ typedef struct typedef enum { CALLASYNCPROC, - FTPGETFILEW, FTPDELETEFILEW, FTPREMOVEDIRECTORYW, FTPRENAMEFILEW,