Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions shadowsocks-libev/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,14 @@ include $(TOPDIR)/rules.mk
#
PKG_NAME:=shadowsocks-libev
PKG_VERSION:=3.3.5
PKG_RELEASE:=12

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
PKG_HASH:=cfc8eded35360f4b67e18dc447b0c00cddb29cc57a3cec48b135e5fb87433488
PKG_RELEASE:=13

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev.git
PKG_SOURCE_DATE:=2022-11-30
PKG_SOURCE_VERSION:=d83ace0f0d9c05656c13d66aa4a449bf70143254
PKG_MIRROR_HASH:=6ff973af37c20cf0430f106d360b94b8b91df6dd8d7be3908ee84b5a86c3319f
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz

PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
From 8be7a7cb00b9540e9be05d409191b0bc1ba424f0 Mon Sep 17 00:00:00 2001
From: notsure2 <notsure2@protonmail.com>
Date: Mon, 11 Dec 2023 09:15:47 +0200
Subject: [PATCH] Fix mishandling of incoming socket buffer. It must be set on
the listening socket not the accepted socket.

---
src/local.c | 16 ++++++++--------
src/redir.c | 16 ++++++++--------
src/server.c | 16 ++++++++--------
src/tunnel.c | 16 ++++++++--------
4 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/src/local.c b/src/local.c
index fa1ca7b..51f62c4 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 d36fe3f..86b7238 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 73b6599..ef347a5 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 99ed412..9f0dd57 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];

--
2.39.5

200 changes: 0 additions & 200 deletions shadowsocks-libev/patches/101-fix-mbedtls3.6-build.patch

This file was deleted.

Loading