Module: wine Branch: master Commit: ed1c7f8135c940190b869c47e87112ed0ec44d1f URL: http://source.winehq.org/git/wine.git/?a=commit;h=ed1c7f8135c940190b869c47e8...
Author: Jacek Caban jacek@codeweavers.com Date: Sun Dec 30 17:42:17 2007 +0100
urlmon: Make start_binding more generic.
---
dlls/urlmon/binding.c | 21 ++++++++++++++++++--- dlls/urlmon/umon.c | 2 +- dlls/urlmon/urlmon_main.h | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c index 4c2de3c..ca83537 100644 --- a/dlls/urlmon/binding.c +++ b/dlls/urlmon/binding.c @@ -1219,14 +1219,12 @@ static HRESULT Binding_Create(LPCWSTR url, IBindCtx *pbc, REFIID riid, Binding * return S_OK; }
-HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) +static HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, Binding **ret) { Binding *binding = NULL; HRESULT hres; MSG msg;
- *ppv = NULL; - hres = Binding_Create(url, pbc, riid, &binding); if(FAILED(hres)) return hres; @@ -1242,6 +1240,8 @@ HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) hres = IInternetProtocol_Start(binding->protocol, url, PROTSINK(binding), BINDINF(binding), 0, 0);
+ TRACE("start ret %08x\n", hres); + if(FAILED(hres)) { WARN("Start failed: %08x\n", hres);
@@ -1261,6 +1261,21 @@ HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) } }
+ *ret = binding; + return S_OK; +} + +HRESULT bind_to_storage(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) +{ + Binding *binding; + HRESULT hres; + + *ppv = NULL; + + hres = start_binding(url, pbc, riid, &binding); + if(FAILED(hres)) + return hres; + if(binding->stream->init_buf) { if(binding->state & BINDING_LOCKED) IInternetProtocol_UnlockRequest(binding->protocol); diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c index 7b4a772..51ad270 100644 --- a/dlls/urlmon/umon.c +++ b/dlls/urlmon/umon.c @@ -743,7 +743,7 @@ static HRESULT WINAPI URLMonikerImpl_BindToStorage(IMoniker* iface,
TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject);
- return start_binding(This->URLName, pbc, riid, ppvObject); + return bind_to_storage(This->URLName, pbc, riid, ppvObject); }
/****************************************************************************** diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h index 0c64124..6508049 100644 --- a/dlls/urlmon/urlmon_main.h +++ b/dlls/urlmon/urlmon_main.h @@ -68,7 +68,7 @@ void UMCloseCacheFileStream(IUMCacheStream *pstr); IInternetProtocolInfo *get_protocol_info(LPCWSTR url); HRESULT get_protocol_handler(LPCWSTR url, CLSID *clsid, IClassFactory **ret);
-HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv); +HRESULT bind_to_storage(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv);
HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol **protocol); void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *sink);