diff --git a/src/proxy/tcp_proxy_client.c b/src/proxy/tcp_proxy_client.c index d47c4409..17ce289e 100644 --- a/src/proxy/tcp_proxy_client.c +++ b/src/proxy/tcp_proxy_client.c @@ -470,7 +470,8 @@ static void tcp_proxy_client_handle_fin(struct tcp_proxy_client* p, uint32_t str if (!pc || !pc->pcb) return; DEBUG_INFO(DEBUG_CATEGORY_SOCKET, "PROXY FIN FROM exit sid=%08x — shutdown read", stream_id); pc->fin_remote = 1; - tcp_shutdown(pc->pcb, 0, 1); + if (pc->pcb->state != TIME_WAIT && pc->pcb->state != CLOSED) + tcp_shutdown(pc->pcb, 0, 1); if (pc->fin_local && !pc->close_sent && !pc->close_pending) tcp_proxy_client_send_close(pc); }