This commit is contained in:
aozhiwei 2024-03-24 20:16:11 +08:00
parent 354cce97a6
commit 67880fdb53
3 changed files with 23 additions and 2 deletions

View File

@ -47,7 +47,7 @@ void DownStreamMgr::OnClientDisconnect(int socket_handle)
socket_hash_.erase(socket_handle);
}
RemovePendingAccount(socket_handle);
MasterMgr::Instance()->RemoveRequest(socket_handle);
MasterMgr::Instance()->OnDownStreamDisconnect(socket_handle);
}
void DownStreamMgr::OnUpStreamDisconnect(int instance_id)

View File

@ -126,6 +126,10 @@ void MasterMgr::_SS_MS_HttpTunnelResponse(f8::MsgHdr* hdr, const ss::SS_MS_HttpT
);
if (!conn.expired()) {
ss::SS_HttpTunnelRequest msg;
msg.set_context_id(msg.context_id());
msg.set_socket_handle(msg.socket_handle());
msg.set_url(msg.url());
msg.set_query_str(msg.query_str());
conn.lock()->SendMsg(req->socket_handle, msg);
return;
} else {
@ -135,6 +139,9 @@ void MasterMgr::_SS_MS_HttpTunnelResponse(f8::MsgHdr* hdr, const ss::SS_MS_HttpT
req->request->GetResp()->SetVal("errcode", 500);
req->request->GetResp()->SetVal("errmsg", "server internal error");
req->request->Response();
if (!req->timer_wp.expired()) {
f8::Timer::Instance()->Delete(req->timer_wp);
}
RemoveHttpTunnelRequest(req->socket_handle);
}
}
@ -247,6 +254,19 @@ void MasterMgr::RequestTargetServer(f8::MsgHdr* hdr,
}
}
void MasterMgr::OnDownStreamDisconnect(int socket_handle)
{
{
auto req = GetHttpTunnelRequestBySocket(socket_handle);
if (req) {
if (!req->timer_wp.expired()) {
f8::Timer::Instance()->Delete(req->timer_wp);
}
}
}
RemoveRequest(socket_handle);
}
void MasterMgr::RemoveRequest(int socket_handle)
{
{

View File

@ -39,10 +39,11 @@ class MasterMgr : public a8::Singleton<MasterMgr>
const std::string& server_info,
int is_reconnect,
int proto_version);
void RemoveRequest(int socket_handle);
void OnDownStreamDisconnect(int socket_handle);
void AddHttpTunnelRequest(int socket_handle, std::shared_ptr<f8::JsonHttpRequest> request);
private:
void RemoveRequest(int socket_handle);
std::shared_ptr<HttpTunnelRequest> GetHttpTunnelRequestBySocket(int socket_handle);
std::shared_ptr<HttpTunnelRequest> GetHttpTunnelRequestByContextId(long long conext_id);
std::shared_ptr<RequestTarget> GetRequestBySocket(int socket_handle);