Skip to content

Commit 4c14101

Browse files
Make sure m_spServiceProvider is set when IInternetProtocolEx::StartEx is called
1 parent 1ff8ff0 commit 4c14101

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

ProtocolImpl.h

+3
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,9 @@ class CInternetProtocolSinkWithSP :
379379
HRESULT OnStart(LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink,
380380
IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved,
381381
IInternetProtocol* pTargetProtocol);
382+
HRESULT OnStartEx(IUri* pUri, IInternetProtocolSink *pOIProtSink,
383+
IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved,
384+
IInternetProtocol* pTargetProtocol);
382385

383386
STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, void** ppv);
384387

ProtocolImpl.inl

+14-14
Original file line numberDiff line numberDiff line change
@@ -673,25 +673,25 @@ inline HRESULT CInternetProtocolSinkWithSP<T, ThreadModel>::OnStart(
673673
{
674674
pOIProtSink->QueryInterface(&m_spServiceProvider);
675675
}
676+
return hr;
677+
}
676678

677-
CComPtr<IInternetProtocolSink> spSink;
678-
CComPtr<IInternetBindInfo> spBindInfo;
679-
if (SUCCEEDED(hr))
680-
{
681-
hr = QueryInterface(IID_IInternetProtocolSink,
682-
reinterpret_cast<void**>(&spSink));
683-
ATLASSERT(SUCCEEDED(hr) && spSink != 0);
684-
}
685-
if (SUCCEEDED(hr))
679+
template <class T, class ThreadModel>
680+
inline HRESULT CInternetProtocolSinkWithSP<T, ThreadModel>::OnStartEx(
681+
IUri* pUri, IInternetProtocolSink *pOIProtSink,
682+
IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved,
683+
IInternetProtocol* pTargetProtocol)
684+
{
685+
ATLASSERT(m_spServiceProvider == 0);
686+
if (m_spServiceProvider)
686687
{
687-
hr = QueryInterface(IID_IInternetBindInfo,
688-
reinterpret_cast<void**>(&spBindInfo));
689-
ATLASSERT(SUCCEEDED(hr) && spBindInfo != 0);
688+
return E_UNEXPECTED;
690689
}
690+
HRESULT hr = BaseClass::OnStartEx(pUri, pOIProtSink, pOIBindInfo, grfPI,
691+
dwReserved, pTargetProtocol);
691692
if (SUCCEEDED(hr))
692693
{
693-
hr = pTargetProtocol->Start(szUrl, spSink, spBindInfo, grfPI,
694-
dwReserved);
694+
pOIProtSink->QueryInterface(&m_spServiceProvider);
695695
}
696696
return hr;
697697
}

0 commit comments

Comments
 (0)