diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c1c2d066..9e488fbac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.2) set(PROJECT_NAME shadowsocks-libev) -set(RELEASE_DATE 2020-09-15) -set(PROJECT_VERSION "3.3.5") +set(RELEASE_DATE 2023-12-11) +set(PROJECT_VERSION "3.3.6") set(PROJECT_DESC "a lightweight secured socks5 proxy") set(PROJECT_URL "https://shadowsocks.org") set(PROJECT_ISSUES_URL "https://github.com/shadowsocks/shadowsocks-libev") diff --git a/configure.ac b/configure.ac index 134ea5f6b..8330275ba 100755 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl -*- Autoconf -*- dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.67]) -AC_INIT([shadowsocks-libev], [3.3.5], [max.c.lv@gmail.com]) +AC_INIT([shadowsocks-libev], [3.3.6], [max.c.lv@gmail.com]) AC_CONFIG_SRCDIR([src/crypto.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR(auto) diff --git a/src/local.c b/src/local.c index fa1ca7b31..51f62c4ae 100644 --- a/src/local.c +++ b/src/local.c @@ -205,6 +205,14 @@ create_and_bind(const char *addr, const char *port) } } + if (tcp_incoming_sndbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); + } + + if (tcp_incoming_rcvbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); + } + s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen); if (s == 0) { /* We managed to bind successfully! */ @@ -1406,14 +1414,6 @@ accept_cb(EV_P_ ev_io *w, int revents) setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); #endif - if (tcp_incoming_sndbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); - } - - if (tcp_incoming_rcvbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); - } - server_t *server = new_server(serverfd); server->listener = listener; diff --git a/src/redir.c b/src/redir.c index d36fe3fe7..86b7238dc 100644 --- a/src/redir.c +++ b/src/redir.c @@ -201,6 +201,14 @@ create_and_bind(const char *addr, const char *port) LOGI("tcp tproxy mode enabled"); } + if (tcp_incoming_sndbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); + } + + if (tcp_incoming_rcvbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); + } + s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen); if (s == 0) { /* We managed to bind successfully! */ @@ -759,14 +767,6 @@ accept_cb(EV_P_ ev_io *w, int revents) setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); #endif - if (tcp_incoming_sndbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); - } - - if (tcp_incoming_rcvbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); - } - int index = rand() % listener->remote_num; struct sockaddr *remote_addr = listener->remote_addr[index]; diff --git a/src/server.c b/src/server.c index 73b65996d..ef347a5c1 100644 --- a/src/server.c +++ b/src/server.c @@ -620,6 +620,14 @@ create_and_bind(const char *host, const char *port, int mptcp) } } + if (tcp_incoming_sndbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); + } + + if (tcp_incoming_rcvbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); + } + // Enable out-of-tree mptcp if (mptcp == 1) { int i = 0; @@ -1769,14 +1777,6 @@ accept_cb(EV_P_ ev_io *w, int revents) setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); #endif - if (tcp_incoming_sndbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); - } - - if (tcp_incoming_rcvbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); - } - setnonblocking(serverfd); server_t *server = new_server(serverfd, listener); diff --git a/src/tunnel.c b/src/tunnel.c index 99ed41287..9f0dd5782 100644 --- a/src/tunnel.c +++ b/src/tunnel.c @@ -166,6 +166,14 @@ create_and_bind(const char *addr, const char *port) } } + if (tcp_incoming_sndbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); + } + + if (tcp_incoming_rcvbuf > 0) { + setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); + } + s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen); if (s == 0) { /* We managed to bind successfully! */ @@ -725,14 +733,6 @@ accept_cb(EV_P_ ev_io *w, int revents) setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); #endif - if (tcp_incoming_sndbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int)); - } - - if (tcp_incoming_rcvbuf > 0) { - setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int)); - } - int index = rand() % listener->remote_num; struct sockaddr *remote_addr = listener->remote_addr[index];