📄 rtpproxy.cpp
字号:
/* * This routine should contain RTSP related utility functions. */#include "hxtypes.h" #include "hxresult.h" #include "hxcom.h" #include "hxcomm.h"#include "hxcore.h"#include "hxfiles.h"// pncont#include "hxstring.h"#include "chxpckts.h"#include "mimescan.h"#include "rtpproxy.h"BOOL proxiesSupportFlash4(IHXBuffer* pViaStr){ BOOL cachesFlash4 = TRUE; HX_RESULT err = HXR_FAIL; // check via header to verify that al proxies support RS 8.0 features // (ie latest flash datatype) const char* pHeaderValues = (const char*) pViaStr->GetBuffer(); MIMEInputStream input(pHeaderValues, strlen(pHeaderValues)); MIMEScanner scanner(input); CHXString strViaFinal; MIMEToken nextTok = scanner.nextToken(","); while(nextTok.hasValue() || (nextTok.lastChar() != MIMEToken::T_EOL) && (nextTok.lastChar() != MIMEToken::T_EOF)) { if (nextTok.hasValue()) { CHXString strViaToken = nextTok.value(); // per spec there should be a protocol/version string there, ie "RTSP/1.0" // or "1.0". Old RealProxies used non-compliant psuedonym only! int nVerOffset = strViaToken.Find("RealProxy Version"); if(nVerOffset == -1) { // oops, there is a proxy here that does not support flash 4 cachesFlash4 = FALSE; break; } } nextTok = scanner.nextToken(","); } return cachesFlash4;}void AddNoCacheHeader(IUnknown* pContext, IHXRequest* pRequest){ // Add the "Cache-Control: no-cache" response header so that Proxies // don't think they can cache our dynamically generated content IHXCommonClassFactory* pCCF; if (pContext && pRequest) { pContext->QueryInterface(IID_IHXCommonClassFactory, (void**)&pCCF); IHXValues* pResHeaders = NULL; pRequest->GetResponseHeaders(pResHeaders); if (!pResHeaders) { IUnknown* pUnknown = NULL; pCCF->CreateInstance(CLSID_IHXKeyValueList, (void**)&pUnknown); pUnknown->QueryInterface(IID_IHXValues, (void**)&pResHeaders); pRequest->SetResponseHeaders(pResHeaders); HX_RELEASE(pUnknown); } IHXBuffer* pNoCache = NULL; pCCF->CreateInstance(CLSID_IHXBuffer, (void**)&pNoCache); pNoCache->Set((UCHAR*)"no-cache", 9); pResHeaders->SetPropertyCString("Pragma", pNoCache); HX_RELEASE(pNoCache); HX_RELEASE(pResHeaders); HX_RELEASE(pCCF); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -