增加http代理功能 (#2988)

支持通过http代理拉流, 避免内外网复杂网络环境时需要专门配置防火墙,现在只需要配置一台代理内网的服务器.

---------

Co-authored-by: xia-chu <771730766@qq.com>
This commit is contained in:
alexliyu7352
2023-11-23 11:09:01 +08:00
committed by GitHub
parent a13b8417e5
commit d593267f61
11 changed files with 115 additions and 17 deletions

View File

@@ -15,13 +15,30 @@ using namespace toolkit;
namespace mediakit {
void HttpClientImp::onConnect(const SockException &ex) {
if (!isHttps()) {
//https 302跳转 http时需要关闭ssl
if (isUsedProxy() && !isProxyConnected()) {
// 连接代理服务器
setDoNotUseSSL();
HttpClient::onConnect(ex);
} else {
TcpClientWithSSL<HttpClient>::onConnect(ex);
if (!isHttps()) {
// https 302跳转 http时需要关闭ssl
setDoNotUseSSL();
HttpClient::onConnect(ex);
} else {
TcpClientWithSSL<HttpClient>::onConnect(ex);
}
}
}
ssize_t HttpClientImp::onRecvHeader(const char *data, size_t len) {
if (isUsedProxy() && !isProxyConnected()) {
if (checkProxyConnected(data, len)) {
clearResponse();
onConnect(SockException(Err_success, "proxy connected"));
return 0;
}
}
return HttpClient::onRecvHeader(data, len);
}
} /* namespace mediakit */