From 3095dcefc27e461bbe23ffc9a68adfec617cf9d8 Mon Sep 17 00:00:00 2001 From: hev Date: Tue, 21 Nov 2023 21:05:49 +0800 Subject: [PATCH] HevSocks5SessionUDP: Revert fix timeout for bidirectional link. This reverts commit 107aed906ec2e2fbaae0497dd3c47f85c99babd2. --- src/hev-socks5-session-udp.c | 41 ++++++------------------------------ 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/src/hev-socks5-session-udp.c b/src/hev-socks5-session-udp.c index 3cd16ea..28de9f6 100644 --- a/src/hev-socks5-session-udp.c +++ b/src/hev-socks5-session-udp.c @@ -29,16 +29,9 @@ #define task_io_yielder hev_socks5_task_io_yielder -typedef enum _HevSocks5UDPAlive HevSocks5UDPAlive; typedef struct _HevSocks5UDPFrame HevSocks5UDPFrame; typedef struct _HevSocks5UDPSplice HevSocks5UDPSplice; -enum _HevSocks5UDPAlive -{ - HEV_SOCKS5_UDP_ALIVE_F = (1 << 0), - HEV_SOCKS5_UDP_ALIVE_B = (1 << 1), -}; - struct _HevSocks5UDPFrame { HevListNode node; @@ -51,12 +44,10 @@ struct _HevSocks5UDPSplice { HevSocks5UDP *udp; HevTask *task; - HevSocks5UDPAlive alive; }; static int -hev_socks5_session_udp_fwd_f (HevSocks5SessionUDP *self, - HevSocks5UDPSplice *splice) +hev_socks5_session_udp_fwd_f (HevSocks5SessionUDP *self) { HevSocks5UDPFrame *frame; struct sockaddr *addr; @@ -72,12 +63,8 @@ hev_socks5_session_udp_fwd_f (HevSocks5SessionUDP *self, break; res = task_io_yielder (HEV_TASK_WAITIO, self); - if (res < 0) { - splice->alive &= ~HEV_SOCKS5_UDP_ALIVE_F; - if (splice->alive && hev_socks5_get_timeout (HEV_SOCKS5 (self))) - return 0; + if (res < 0) return -1; - } } frame = container_of (node, HevSocks5UDPFrame, node); @@ -86,17 +73,10 @@ hev_socks5_session_udp_fwd_f (HevSocks5SessionUDP *self, udp = HEV_SOCKS5_UDP (self); res = hev_socks5_udp_sendto (udp, frame->data, frame->len, addr); if (res <= 0) { - if (res < -1) { - splice->alive &= ~HEV_SOCKS5_UDP_ALIVE_F; - if (splice->alive && hev_socks5_get_timeout (HEV_SOCKS5 (self))) - return 0; - } LOG_D ("%p socks5 session udp fwd f send", self); - return -1; + res = -1; } - splice->alive |= HEV_SOCKS5_UDP_ALIVE_F; - hev_list_del (&self->frame_list, node); hev_free (frame->data); hev_free (frame); @@ -106,8 +86,7 @@ hev_socks5_session_udp_fwd_f (HevSocks5SessionUDP *self, } static int -hev_socks5_session_udp_fwd_b (HevSocks5SessionUDP *self, - HevSocks5UDPSplice *splice) +hev_socks5_session_udp_fwd_b (HevSocks5SessionUDP *self) { HevSocks5UDP *udp = HEV_SOCKS5_UDP (self); struct sockaddr_in6 addr = { 0 }; @@ -125,11 +104,6 @@ hev_socks5_session_udp_fwd_b (HevSocks5SessionUDP *self, res = hev_socks5_udp_recvfrom (udp, buf, sizeof (buf), saddr); if (res <= 0) { - if (res < -1) { - splice->alive &= ~HEV_SOCKS5_UDP_ALIVE_B; - if (splice->alive) - return 0; - } LOG_D ("%p socks5 session udp fwd b recv", self); return -1; } @@ -148,8 +122,6 @@ hev_socks5_session_udp_fwd_b (HevSocks5SessionUDP *self, return -1; } - splice->alive |= HEV_SOCKS5_UDP_ALIVE_B; - return 0; } @@ -217,7 +189,7 @@ splice_task_entry (void *data) hev_task_mod_fd (task, fd, POLLIN); for (;;) { - if (hev_socks5_session_udp_fwd_b (self, splice) < 0) + if (hev_socks5_session_udp_fwd_b (self) < 0) break; } @@ -268,7 +240,6 @@ hev_socks5_session_udp_splice (HevSocks5Session *base) splice.task = task; splice.udp = self; - splice.alive = HEV_SOCKS5_UDP_ALIVE_F | HEV_SOCKS5_UDP_ALIVE_B; stack_size = hev_config_get_misc_task_stack_size (); task = hev_task_new (stack_size); @@ -280,7 +251,7 @@ hev_socks5_session_udp_splice (HevSocks5Session *base) hev_task_add_fd (splice.task, fd, POLLOUT); for (;;) { - if (hev_socks5_session_udp_fwd_f (self, &splice) < 0) + if (hev_socks5_session_udp_fwd_f (self) < 0) break; }