Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: Shared/PluginMimeFilterClient.cpp

Issue 9595007: Fix for crash in urlmon.dll on telegrafua.com. (Endless redirect loop) (Closed)
Patch Set: Created March 5, 2013, 1:41 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | Shared/ProtocolImpl.inl » ('j') | Shared/ProtocolImpl.inl » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginMimeFilterClient.h" 3 #include "PluginMimeFilterClient.h"
4 //#include "AdPluginMimeFilter.h" 4 //#include "AdPluginMimeFilter.h"
5 #include "PluginClient.h" 5 #include "PluginClient.h"
6 #include "PluginWbPassThrough.h" 6 #include "PluginWbPassThrough.h"
7 7
8 8
9 typedef PassthroughAPP::CMetaFactory<PassthroughAPP::CComClassFactoryProtocol,WB Passthru> MetaFactory; 9 typedef PassthroughAPP::CMetaFactory<PassthroughAPP::CComClassFactoryProtocol,WB Passthru> MetaFactory;
10 10
11 11
12 CPluginMimeFilterClient::CPluginMimeFilterClient() : m_classFactory(NULL), m_spC FHTTP(NULL) 12 CPluginMimeFilterClient::CPluginMimeFilterClient() : m_classFactory(NULL), m_spC FHTTP(NULL)
13 { 13 {
14 » // Should only be called once 14 // Should only be called once
15 » // We register mime filters here 15 // We register mime filters here
16 » // Register asynchronous protocol 16 // Register asynchronous protocol
17 » CComPtr<IInternetSession> spSession; 17 CComPtr<IInternetSession> spSession;
18 » m_spCFHTTP = NULL; 18 m_spCFHTTP = NULL;
19 » HRESULT hr = ::CoInternetGetSession(0, &spSession, 0); 19 HRESULT hr = ::CoInternetGetSession(0, &spSession, 0);
20 » if (FAILED(hr) || !spSession) 20 if (FAILED(hr) || !spSession)
21 » { 21 {
22 » » DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_G ET_INTERNET_SESSION, "MimeClient::CoInternetGetSession failed"); 22 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_GET_INTERNET_ SESSION, "MimeClient::CoInternetGetSession failed");
23 » » return; 23 return;
24 » } 24 }
25 25
26 » hr = MetaFactory::CreateInstance(CLSID_HttpProtocol, &m_spCFHTTP); 26 hr = MetaFactory::CreateInstance(CLSID_HttpProtocol, &m_spCFHTTP);
27 » if (FAILED(hr) || !m_spCFHTTP) 27 if (FAILED(hr) || !m_spCFHTTP)
28 » { 28 {
29 » » DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_C REATE_HTTP_INSTANCE, "MimeClient::CreateInstance failed"); 29 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_CREATE_HTTP_I NSTANCE, "MimeClient::CreateInstance failed");
30 » » return; 30 return;
31 » } 31 }
32 32
33 » hr = spSession->RegisterNameSpace(m_spCFHTTP, CLSID_NULL, L"http", 0, 0, 0); 33 hr = spSession->RegisterNameSpace(m_spCFHTTP, CLSID_HttpProtocol, L"http", 0, 0, 0);
34 » if (FAILED(hr)) 34 if (FAILED(hr))
35 » { 35 {
36 » » DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_R EGISTER_HTTP_NAMESPACE, "MimeClient::RegisterNameSpace failed"); 36 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SESSION, PLUGIN_ERROR_SESSION_REGISTER_HTTP _NAMESPACE, "MimeClient::RegisterNameSpace failed");
37 » » return; 37 return;
38 » } 38 }
39 } 39 }
40 40
41 41
42 CPluginMimeFilterClient::~CPluginMimeFilterClient() 42 CPluginMimeFilterClient::~CPluginMimeFilterClient()
43 { 43 {
44 » CComPtr<IInternetSession> spSession; 44 CComPtr<IInternetSession> spSession;
45 45
46 » ::CoInternetGetSession(0, &spSession, 0); 46 ::CoInternetGetSession(0, &spSession, 0);
47 » if (spSession) 47 if (spSession)
48 » { 48 {
49 » spSession->UnregisterNameSpace(m_spCFHTTP, L"http"); 49 spSession->UnregisterNameSpace(m_spCFHTTP, L"http");
50 » » if (m_spCFHTTP != NULL) 50 if (m_spCFHTTP != NULL)
51 » » { 51 {
52 » » » m_spCFHTTP.Release(); 52 m_spCFHTTP.Release();
53 » » » m_spCFHTTP = NULL; 53 m_spCFHTTP = NULL;
54 » » } 54 }
55 » } 55 }
56 } 56 }
57 57
58 void CPluginMimeFilterClient::Unregister() 58 void CPluginMimeFilterClient::Unregister()
59 { 59 {
60 » CComPtr<IInternetSession> spSession; 60 CComPtr<IInternetSession> spSession;
61 61
62 » ::CoInternetGetSession(0, &spSession, 0); 62 ::CoInternetGetSession(0, &spSession, 0);
63 » if (spSession) 63 if (spSession)
64 » { 64 {
65 spSession->UnregisterNameSpace(m_spCFHTTP, L"http"); 65 spSession->UnregisterNameSpace(m_spCFHTTP, L"http");
66 » } 66 }
67 } 67 }
OLDNEW
« no previous file with comments | « no previous file | Shared/ProtocolImpl.inl » ('j') | Shared/ProtocolImpl.inl » ('J')

Powered by Google App Engine
This is Rietveld