| Index: src/plugin/PluginWbPassThrough.cpp |
| =================================================================== |
| --- a/src/plugin/PluginWbPassThrough.cpp |
| +++ b/src/plugin/PluginWbPassThrough.cpp |
| @@ -243,8 +243,16 @@ |
| // returns quite minimal configuration in comparison with the implementation from Microsofts' |
| // libraries (see grfBINDF and bindInfo.dwOptions). The impl from MS often includes something |
| // else. |
| -bool WBPassthruSink::IsFlashRequest() |
| +bool WBPassthruSink::IsFlashRequest(const wchar_t* const* additionalHeaders) |
| { |
| + if (additionalHeaders && *additionalHeaders) |
| + { |
| + auto flashVersionHeader = ExtractHttpHeader<std::wstring>(*additionalHeaders, L"x-flash-version:", L"\n"); |
| + if (!TrimString(flashVersionHeader).empty()) |
| + { |
| + return true; |
| + } |
| + } |
| ATL::CComPtr<IBindStatusCallback> bscb; |
| if (SUCCEEDED(QueryServiceFromClient(&bscb)) && !!bscb) |
| { |
| @@ -281,9 +289,9 @@ |
| // There doesn't seem to be any other way to get this header before the request has been made. |
| HRESULT nativeHr = httpNegotiate ? httpNegotiate->BeginningTransaction(szURL, szHeaders, dwReserved, pszAdditionalHeaders) : S_OK; |
| - if (*pszAdditionalHeaders != 0) |
| + if (pszAdditionalHeaders && *pszAdditionalHeaders) |
| { |
| - m_boundDomain = ExtractHttpHeader<std::wstring>(*pszAdditionalHeaders, L"Referer:", L"\n").c_str(); |
| + m_boundDomain = ExtractHttpHeader<std::wstring>(*pszAdditionalHeaders, L"Referer:", L"\n"); |
| } |
| m_boundDomain = TrimString(m_boundDomain); |
| CPluginTab* tab = CPluginClass::GetTab(::GetCurrentThreadId()); |
| @@ -306,7 +314,7 @@ |
| } |
| } |
| - if (IsFlashRequest()) |
| + if (IsFlashRequest(pszAdditionalHeaders)) |
| { |
| m_contentType = CFilter::EContentType::contentTypeObjectSubrequest; |
| } |