Jacek Caban : urlmon: Use pluggable protocol for ftp binding.
Alexandre Julliard
julliard at winehq.org
Tue Mar 3 11:53:41 CST 2009
Module: wine
Branch: master
Commit: e18e6ba3d8d7edb286dde64b2f6e22bc83e6b474
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e18e6ba3d8d7edb286dde64b2f6e22bc83e6b474
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Mar 2 19:58:07 2009 +0100
urlmon: Use pluggable protocol for ftp binding.
---
dlls/urlmon/umon.c | 65 ++++++++++-----------------------------------------
1 files changed, 13 insertions(+), 52 deletions(-)
diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c
index bbaed5b..c338b15 100644
--- a/dlls/urlmon/umon.c
+++ b/dlls/urlmon/umon.c
@@ -532,8 +532,6 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
if(SUCCEEDED(hres)) {
URL_COMPONENTSW url;
WCHAR *host, *path, *user, *pass;
- DWORD dwService = 0;
- BOOL bSuccess;
TRACE("got bindinfo. bindf = %08x extrainfo = %s bindinfof = %08x bindverb = %08x iid %s\n",
bindf, debugstr_w(bi.szExtraInfo), bi.grfBindInfoF, bi.dwBindVerb, debugstr_guid(&bi.iid));
@@ -583,23 +581,10 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
break;
}
- switch ((DWORD) url.nScheme)
- {
- case INTERNET_SCHEME_FTP:
- if (!url.nPort)
- url.nPort = INTERNET_DEFAULT_FTP_PORT;
- dwService = INTERNET_SERVICE_FTP;
- break;
-
- case INTERNET_SCHEME_GOPHER:
- if (!url.nPort)
- url.nPort = INTERNET_DEFAULT_GOPHER_PORT;
- dwService = INTERNET_SERVICE_GOPHER;
- break;
- }
-
+ if (!url.nPort)
+ url.nPort = INTERNET_DEFAULT_GOPHER_PORT;
bind->hconnect = InternetConnectW(bind->hinternet, host, url.nPort, user, pass,
- dwService, 0, (DWORD_PTR)bind);
+ INTERNET_SERVICE_GOPHER, 0, (DWORD_PTR)bind);
if (!bind->hconnect)
{
hres = HRESULT_FROM_WIN32(GetLastError());
@@ -612,37 +597,12 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_CONNECTING, NULL);
hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_SENDINGREQUEST, NULL);
- bSuccess = FALSE;
-
- switch (dwService)
- {
- case INTERNET_SERVICE_GOPHER:
- bind->hrequest = GopherOpenFileW(bind->hconnect,
- path,
- 0,
- INTERNET_FLAG_RELOAD,
- 0);
- if (bind->hrequest)
- bSuccess = TRUE;
- else
- hres = HRESULT_FROM_WIN32(GetLastError());
- break;
-
- case INTERNET_SERVICE_FTP:
- bind->hrequest = FtpOpenFileW(bind->hconnect,
- path,
- GENERIC_READ,
- FTP_TRANSFER_TYPE_BINARY |
- INTERNET_FLAG_TRANSFER_BINARY |
- INTERNET_FLAG_RELOAD,
- 0);
- if (bind->hrequest)
- bSuccess = TRUE;
- else
- hres = HRESULT_FROM_WIN32(GetLastError());
- break;
- }
- if(bSuccess)
+ bind->hrequest = GopherOpenFileW(bind->hconnect,
+ path,
+ 0,
+ INTERNET_FLAG_RELOAD,
+ 0);
+ if (bind->hrequest)
{
TRACE("res = %d gle = %u url len = %d\n", hres, GetLastError(), bind->expected_size);
@@ -660,7 +620,10 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
}
InternetCloseHandle(bind->hrequest);
hres = S_OK;
+ }else {
+ hres = HRESULT_FROM_WIN32(GetLastError());
}
+
InternetCloseHandle(bind->hconnect);
InternetCloseHandle(bind->hinternet);
@@ -704,9 +667,7 @@ static HRESULT WINAPI URLMonikerImpl_BindToStorage(IMoniker* iface,
return E_FAIL;
}
- if(IsEqualGUID(&IID_IStream, riid) &&
- ( url.nScheme == INTERNET_SCHEME_FTP
- || url.nScheme == INTERNET_SCHEME_GOPHER))
+ if(IsEqualGUID(&IID_IStream, riid) && url.nScheme == INTERNET_SCHEME_GOPHER)
return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, ppvObject);
TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject);
More information about the wine-cvs
mailing list