aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-01-02 18:42:35 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-01-02 18:46:29 +0200
commit83ba00678321da5f04f60082e3cd1da40d38cdc8 (patch)
treee03365d43536c1da661855369504672b8f8d7a1f /testing
parentd0b4f9226bbaf7637310374382c21dea88d25a3a (diff)
downloadaports-83ba00678321da5f04f60082e3cd1da40d38cdc8.tar.bz2
aports-83ba00678321da5f04f60082e3cd1da40d38cdc8.tar.xz
testing/uwsgi: backport --close-on-exec2 from upstream
Diffstat (limited to 'testing')
-rw-r--r--testing/uwsgi/0001-core-socket-close-TCP-server-fd-when-spawning.patch27
-rw-r--r--testing/uwsgi/0001-core-socket-common-socket-creation-function-for-bind.patch91
-rw-r--r--testing/uwsgi/0002-core-socket-move-socket-buffer-size-setting-to-creat.patch97
-rw-r--r--testing/uwsgi/0003-core-socket-move-listen-queue-size-checking-to-creat.patch65
-rw-r--r--testing/uwsgi/0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch73
-rw-r--r--testing/uwsgi/0005-option-for-closing-server-sockets-when-spawning.patch70
-rw-r--r--testing/uwsgi/APKBUILD26
7 files changed, 417 insertions, 32 deletions
diff --git a/testing/uwsgi/0001-core-socket-close-TCP-server-fd-when-spawning.patch b/testing/uwsgi/0001-core-socket-close-TCP-server-fd-when-spawning.patch
deleted file mode 100644
index 00a6abc84c..0000000000
--- a/testing/uwsgi/0001-core-socket-close-TCP-server-fd-when-spawning.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 015cf2049c6cbd90ebdd219e391735459b9a4c8d Mon Sep 17 00:00:00 2001
-From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
-Date: Wed, 1 Jan 2014 03:51:56 +0200
-Subject: [PATCH] core/socket: close TCP server fd when spawning
-
-If server fd is not closed, it is not possible to restart uwsgi if the
-spawned process is still running as it keeps the address/port bound.
----
- core/socket.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/core/socket.c b/core/socket.c
-index 0696eff..2325cbf 100644
---- a/core/socket.c
-+++ b/core/socket.c
-@@ -674,6 +674,8 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
- return -1;
- }
-
-+ if (fcntl(serverfd, F_SETFD, FD_CLOEXEC) < 0) uwsgi_error("fcntl()");
-+
- if (uwsgi.so_sndbuf) {
- socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
- if (setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(socklen_t)) < 0) {
---
-1.8.4.2
-
diff --git a/testing/uwsgi/0001-core-socket-common-socket-creation-function-for-bind.patch b/testing/uwsgi/0001-core-socket-common-socket-creation-function-for-bind.patch
new file mode 100644
index 0000000000..45b861f500
--- /dev/null
+++ b/testing/uwsgi/0001-core-socket-common-socket-creation-function-for-bind.patch
@@ -0,0 +1,91 @@
+From 4d43a66581168674a9db52ac9bf690fa4f106dca Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Wed, 1 Jan 2014 23:36:26 +0200
+Subject: [PATCH 1/5] core/socket: common socket creation function for
+ bind_to_*
+
+---
+ core/socket.c | 40 +++++++++++++++++-----------------------
+ 1 file changed, 17 insertions(+), 23 deletions(-)
+
+diff --git a/core/socket.c b/core/socket.c
+index 0696eff..7e47dc0 100644
+--- a/core/socket.c
++++ b/core/socket.c
+@@ -76,18 +76,23 @@ char *uwsgi_getsockname(int fd) {
+ return NULL;
+ }
+
++static int create_server_socket(int domain, int type) {
++ int serverfd = socket(domain, type, 0);
++ if (serverfd < 0) {
++ uwsgi_error("socket()");
++ uwsgi_nuclear_blast();
++ }
++ return serverfd;
++}
++
+ int bind_to_unix_dgram(char *socket_name) {
+
+ int serverfd;
+ struct sockaddr_un *uws_addr;
+ socklen_t len;
+
+- serverfd = socket(AF_UNIX, SOCK_DGRAM, 0);
+- if (serverfd < 0) {
+- uwsgi_error("socket()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
++ serverfd = create_server_socket(AF_UNIX, SOCK_DGRAM);
++ if (serverfd < 0) return -1;
+
+ if (unlink(socket_name) != 0 && errno != ENOENT) {
+ uwsgi_error("error removing unix socket, unlink()");
+@@ -140,12 +145,8 @@ int bind_to_unix(char *socket_name, int listen_queue, int chmod_socket, int abst
+ }
+
+ memset(uws_addr, 0, sizeof(struct sockaddr_un));
+- serverfd = socket(AF_UNIX, SOCK_STREAM, 0);
+- if (serverfd < 0) {
+- uwsgi_error("socket()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
++ serverfd = create_server_socket(AF_UNIX, SOCK_STREAM);
++ if (serverfd < 0) return -1;
+ if (abstract_socket == 0) {
+ if (unlink(socket_name) != 0 && errno != ENOENT) {
+ uwsgi_error("unlink()");
+@@ -288,11 +289,8 @@ int bind_to_udp(char *socket_name, int multicast, int broadcast) {
+ }
+
+
+- serverfd = socket(AF_INET, SOCK_DGRAM, 0);
+- if (serverfd < 0) {
+- uwsgi_error("socket()");
+- return -1;
+- }
++ serverfd = create_server_socket(AF_INET, SOCK_DGRAM);
++ if (serverfd < 0) return -1;
+
+ if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
+ uwsgi_error("setsockopt()");
+@@ -667,12 +665,8 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
+ #endif
+
+
+- serverfd = socket(family, SOCK_STREAM, 0);
+- if (serverfd < 0) {
+- uwsgi_error("socket()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
++ serverfd = create_server_socket(family, SOCK_STREAM);
++ if (serverfd < 0) return -1;
+
+ if (uwsgi.so_sndbuf) {
+ socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
+--
+1.8.4.2
+
diff --git a/testing/uwsgi/0002-core-socket-move-socket-buffer-size-setting-to-creat.patch b/testing/uwsgi/0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
new file mode 100644
index 0000000000..88cb2b73a4
--- /dev/null
+++ b/testing/uwsgi/0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
@@ -0,0 +1,97 @@
+From 32b71268365456f246d20212e0acf63bfdf9ffe6 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Wed, 1 Jan 2014 23:46:02 +0200
+Subject: [PATCH 2/5] core/socket: move socket buffer size setting to
+ create_server_socket
+
+---
+ core/socket.c | 58 ++++++++++++++++++++++------------------------------------
+ 1 file changed, 22 insertions(+), 36 deletions(-)
+
+diff --git a/core/socket.c b/core/socket.c
+index 7e47dc0..ee63b98 100644
+--- a/core/socket.c
++++ b/core/socket.c
+@@ -81,7 +81,29 @@ static int create_server_socket(int domain, int type) {
+ if (serverfd < 0) {
+ uwsgi_error("socket()");
+ uwsgi_nuclear_blast();
++ return -1;
++ }
++
++ if (type == SOCK_STREAM) {
++ if (uwsgi.so_sndbuf) {
++ socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
++ if (setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(socklen_t)) < 0) {
++ uwsgi_error("SO_SNDBUF setsockopt()");
++ uwsgi_nuclear_blast();
++ return -1;
++ }
++ }
++
++ if (uwsgi.so_rcvbuf) {
++ socklen_t rcvbuf = (socklen_t) uwsgi.so_rcvbuf;
++ if (setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(socklen_t)) < 0) {
++ uwsgi_error("SO_RCVBUF setsockopt()");
++ uwsgi_nuclear_blast();
++ return -1;
++ }
++ }
+ }
++
+ return serverfd;
+ }
+
+@@ -157,24 +179,6 @@ int bind_to_unix(char *socket_name, int listen_queue, int chmod_socket, int abst
+ uwsgi_log("setting abstract socket mode (warning: only Linux supports this)\n");
+ }
+
+- if (uwsgi.so_sndbuf) {
+- socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
+- if (setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(socklen_t)) < 0) {
+- uwsgi_error("SO_SNDBUF setsockopt()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+- }
+-
+- if (uwsgi.so_rcvbuf) {
+- socklen_t rcvbuf = (socklen_t) uwsgi.so_rcvbuf;
+- if (setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(socklen_t)) < 0) {
+- uwsgi_error("SO_RCVBUF setsockopt()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+- }
+-
+ uws_addr->sun_family = AF_UNIX;
+ if (socket_name[0] == '@') {
+ memcpy(uws_addr->sun_path + abstract_socket, socket_name + 1, UMIN(strlen(socket_name + 1), 101));
+@@ -668,24 +672,6 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
+ serverfd = create_server_socket(family, SOCK_STREAM);
+ if (serverfd < 0) return -1;
+
+- if (uwsgi.so_sndbuf) {
+- socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
+- if (setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(socklen_t)) < 0) {
+- uwsgi_error("SO_SNDBUF setsockopt()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+- }
+-
+- if (uwsgi.so_rcvbuf) {
+- socklen_t rcvbuf = (socklen_t) uwsgi.so_rcvbuf;
+- if (setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(socklen_t)) < 0) {
+- uwsgi_error("SO_RCVBUF setsockopt()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+- }
+-
+ if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
+ uwsgi_error("SO_REUSEADDR setsockopt()");
+ uwsgi_nuclear_blast();
+--
+1.8.4.2
+
diff --git a/testing/uwsgi/0003-core-socket-move-listen-queue-size-checking-to-creat.patch b/testing/uwsgi/0003-core-socket-move-listen-queue-size-checking-to-creat.patch
new file mode 100644
index 0000000000..c7ed55d04c
--- /dev/null
+++ b/testing/uwsgi/0003-core-socket-move-listen-queue-size-checking-to-creat.patch
@@ -0,0 +1,65 @@
+From 51a8f31f17440702b308b15e0c9dd73255cbb572 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Wed, 1 Jan 2014 23:55:57 +0200
+Subject: [PATCH 3/5] core/socket: move listen queue size checking to
+ create_server_socket
+
+---
+ core/socket.c | 27 +++++++++------------------
+ 1 file changed, 9 insertions(+), 18 deletions(-)
+
+diff --git a/core/socket.c b/core/socket.c
+index ee63b98..3eed477 100644
+--- a/core/socket.c
++++ b/core/socket.c
+@@ -102,6 +102,15 @@ static int create_server_socket(int domain, int type) {
+ return -1;
+ }
+ }
++
++#ifdef __linux__
++ long somaxconn = uwsgi_num_from_file("/proc/sys/net/core/somaxconn", 1);
++ if (somaxconn > 0 && uwsgi.listen_queue > somaxconn) {
++ uwsgi_log("Listen queue size is greater than the system max net.core.somaxconn (%li).\n", somaxconn);
++ uwsgi_nuclear_blast();
++ return -1;
++ }
++#endif
+ }
+
+ return serverfd;
+@@ -208,15 +217,6 @@ int bind_to_unix(char *socket_name, int listen_queue, int chmod_socket, int abst
+ return -1;
+ }
+
+-#ifdef __linux__
+- long somaxconn = uwsgi_num_from_file("/proc/sys/net/core/somaxconn", 1);
+- if (somaxconn > 0 && uwsgi.listen_queue > somaxconn) {
+- uwsgi_log("Listen queue size is greater than the system max net.core.somaxconn (%li).\n", somaxconn);
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+-#endif
+-
+ if (listen(serverfd, listen_queue) != 0) {
+ uwsgi_error("listen()");
+ uwsgi_nuclear_blast();
+@@ -761,15 +761,6 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
+ return -1;
+ }
+
+-#ifdef __linux__
+- long somaxconn = uwsgi_num_from_file("/proc/sys/net/core/somaxconn", 1);
+- if (somaxconn > 0 && uwsgi.listen_queue > somaxconn) {
+- uwsgi_log("Listen queue size is greater than the system max net.core.somaxconn (%li).\n", somaxconn);
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+-#endif
+-
+ if (listen(serverfd, listen_queue) != 0) {
+ uwsgi_error("listen()");
+ uwsgi_nuclear_blast();
+--
+1.8.4.2
+
diff --git a/testing/uwsgi/0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch b/testing/uwsgi/0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
new file mode 100644
index 0000000000..904828b43f
--- /dev/null
+++ b/testing/uwsgi/0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
@@ -0,0 +1,73 @@
+From 4f4f9b93aae55e40dc7f92e19a7e5080a06ce798 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Thu, 2 Jan 2014 00:05:01 +0200
+Subject: [PATCH 4/5] core/socket: move SO_REUSEADDR setting to
+ create_server_socket
+
+---
+ core/socket.c | 21 +++++++++------------
+ 1 file changed, 9 insertions(+), 12 deletions(-)
+
+diff --git a/core/socket.c b/core/socket.c
+index 3eed477..6d5d7d7 100644
+--- a/core/socket.c
++++ b/core/socket.c
+@@ -84,6 +84,15 @@ static int create_server_socket(int domain, int type) {
+ return -1;
+ }
+
++ if (domain != AF_UNIX) {
++ int reuse = 1;
++ if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
++ uwsgi_error("SO_REUSEADDR setsockopt()");
++ uwsgi_nuclear_blast();
++ return -1;
++ }
++ }
++
+ if (type == SOCK_STREAM) {
+ if (uwsgi.so_sndbuf) {
+ socklen_t sndbuf = (socklen_t) uwsgi.so_sndbuf;
+@@ -248,7 +257,6 @@ int bind_to_udp(char *socket_name, int multicast, int broadcast) {
+ struct sockaddr_in uws_addr;
+ char *udp_port;
+ int bcast = 1;
+- int reuse = 1;
+
+ struct ip_mreq mc;
+
+@@ -296,10 +304,6 @@ int bind_to_udp(char *socket_name, int multicast, int broadcast) {
+ serverfd = create_server_socket(AF_INET, SOCK_DGRAM);
+ if (serverfd < 0) return -1;
+
+- if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
+- uwsgi_error("setsockopt()");
+- }
+-
+ if (multicast) {
+ // if multicast is enabled remember to bind to INADDR_ANY
+ uws_addr.sin_addr.s_addr = INADDR_ANY;
+@@ -651,7 +655,6 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
+ #else
+ struct sockaddr_in uws_addr;
+ #endif
+- int reuse = 1;
+ int family = AF_INET;
+ socklen_t addr_len = sizeof(struct sockaddr_in);
+
+@@ -672,12 +675,6 @@ int bind_to_tcp(char *socket_name, int listen_queue, char *tcp_port) {
+ serverfd = create_server_socket(family, SOCK_STREAM);
+ if (serverfd < 0) return -1;
+
+- if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
+- uwsgi_error("SO_REUSEADDR setsockopt()");
+- uwsgi_nuclear_blast();
+- return -1;
+- }
+-
+ #ifdef __linux__
+ #ifndef IP_FREEBIND
+ #define IP_FREEBIND 15
+--
+1.8.4.2
+
diff --git a/testing/uwsgi/0005-option-for-closing-server-sockets-when-spawning.patch b/testing/uwsgi/0005-option-for-closing-server-sockets-when-spawning.patch
new file mode 100644
index 0000000000..b91f1d62ed
--- /dev/null
+++ b/testing/uwsgi/0005-option-for-closing-server-sockets-when-spawning.patch
@@ -0,0 +1,70 @@
+From de160406dbe358fb599eb8343e82f18252247a19 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Wed, 1 Jan 2014 03:51:56 +0200
+Subject: [PATCH 5/5] option for closing server sockets when spawning
+
+If server fd is not closed, it is not possible to restart uwsgi if the
+spawned process is still running as it keeps the address/port bound.
+---
+ core/master_utils.c | 1 +
+ core/socket.c | 3 +++
+ core/uwsgi.c | 3 ++-
+ uwsgi.h | 2 ++
+ 4 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/core/master_utils.c b/core/master_utils.c
+index 89151a0..6316209 100644
+--- a/core/master_utils.c
++++ b/core/master_utils.c
+@@ -407,6 +407,7 @@ void uwsgi_reload(char **argv) {
+ /* check fd table (a module can obviosly open some fd on initialization...) */
+ uwsgi_log("closing all non-uwsgi socket fds > 2 (max_fd = %d)...\n", (int) uwsgi.max_fd);
+ for (i = 3; i < (int) uwsgi.max_fd; i++) {
++ fcntl(i, F_SETFD, 0);
+
+ if (uwsgi_fd_is_safe(i)) continue;
+
+diff --git a/core/socket.c b/core/socket.c
+index 6d5d7d7..8b66a47 100644
+--- a/core/socket.c
++++ b/core/socket.c
+@@ -84,6 +84,9 @@ static int create_server_socket(int domain, int type) {
+ return -1;
+ }
+
++ if (uwsgi.close_on_exec2 && fcntl(serverfd, F_SETFD, FD_CLOEXEC) < 0)
++ uwsgi_error("fcntl()");
++
+ if (domain != AF_UNIX) {
+ int reuse = 1;
+ if (setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, (const void *) &reuse, sizeof(int)) < 0) {
+diff --git a/core/uwsgi.c b/core/uwsgi.c
+index 51821bc..d3d6538 100644
+--- a/core/uwsgi.c
++++ b/core/uwsgi.c
+@@ -871,7 +871,8 @@ static struct uwsgi_option uwsgi_base_options[] = {
+ {"disable-sendfile", no_argument, 0, "disable sendfile() and rely on boring read()/write()", uwsgi_opt_true, &uwsgi.disable_sendfile, 0},
+
+ {"check-cache", optional_argument, 0, "check for response data in the specified cache (empty for default cache)", uwsgi_opt_set_str, &uwsgi.use_check_cache, 0},
+- {"close-on-exec", no_argument, 0, "set close-on-exec on sockets (could be required for spawning processes in requests)", uwsgi_opt_true, &uwsgi.close_on_exec, 0},
++ {"close-on-exec", no_argument, 0, "set close-on-exec on connection sockets (could be required for spawning processes in requests)", uwsgi_opt_true, &uwsgi.close_on_exec, 0},
++ {"close-on-exec2", no_argument, 0, "set close-on-exec on server sockets (could be required for spawning processes in requests)", uwsgi_opt_true, &uwsgi.close_on_exec2, 0},
+ {"mode", required_argument, 0, "set uWSGI custom mode", uwsgi_opt_set_str, &uwsgi.mode, 0},
+ {"env", required_argument, 0, "set environment variable", uwsgi_opt_set_env, NULL, 0},
+ {"envdir", required_argument, 0, "load a daemontools compatible envdir", uwsgi_opt_add_string_list, &uwsgi.envdirs, 0},
+diff --git a/uwsgi.h b/uwsgi.h
+index 29dfc2d..ccb41d4 100644
+--- a/uwsgi.h
++++ b/uwsgi.h
+@@ -2516,6 +2516,8 @@ struct uwsgi_server {
+ void (*gbcw_hook) (void);
+
+ int close_on_exec;
++ int close_on_exec2;
++
+ int tcp_nodelay;
+
+ char *loop;
+--
+1.8.4.2
+
diff --git a/testing/uwsgi/APKBUILD b/testing/uwsgi/APKBUILD
index 445ddc0d0d..a5821a7c51 100644
--- a/testing/uwsgi/APKBUILD
+++ b/testing/uwsgi/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=uwsgi
pkgver=1.9.20
-pkgrel=3
+pkgrel=4
pkgdesc="uWSGI application container server"
url=http://projects.unbit.it/uwsgi/
arch=all
@@ -11,7 +11,11 @@ makedepends="linux-headers lua5.2-dev python python-dev zeromq-dev paxctl
pcre-dev"
source="http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz
uwsgi.initd uwsgi.confd
- 0001-core-socket-close-TCP-server-fd-when-spawning.patch
+ 0001-core-socket-common-socket-creation-function-for-bind.patch
+ 0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
+ 0003-core-socket-move-listen-queue-size-checking-to-creat.patch
+ 0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
+ 0005-option-for-closing-server-sockets-when-spawning.patch
"
_plugins="lua python router_uwsgi"
@@ -78,12 +82,24 @@ done
md5sums="7ba1ef65e0678b6507e52dcabd158a61 uwsgi-1.9.20.tar.gz
8a8be061d7b5f3108a0f16813da68389 uwsgi.initd
3d6afe6a8c52556d1d6c52384fc38d9a uwsgi.confd
-02481e034587e63c5a0203c53ffd892a 0001-core-socket-close-TCP-server-fd-when-spawning.patch"
+cc169ef121e428c85551c470640220b4 0001-core-socket-common-socket-creation-function-for-bind.patch
+e4a8c9ff5826b752c046cf1e35190a6f 0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
+fa18c76cca3020fee9ce6cb3cebe6ef3 0003-core-socket-move-listen-queue-size-checking-to-creat.patch
+9c381a6ed3ca0efad0a1640bdd19793e 0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
+b5d18b3642a6b671f4a8e7531fbb0670 0005-option-for-closing-server-sockets-when-spawning.patch"
sha256sums="1a0e47c051f0490c0083717d018964ed0dbe546283f2d7fb628aebb85af39e8e uwsgi-1.9.20.tar.gz
58b998b025e4a9df20ca917bc93e287f9a8cf02d278d513fa461f70e1d08f799 uwsgi.initd
4cb047e311aecd0f498da1d6a4c0947dd6dc7cc98575d54cb2ef150cacf8425c uwsgi.confd
-09b6bf027e179983d2390cfbb18ae7c2cce368deac76df06af7b3a7f70010eb5 0001-core-socket-close-TCP-server-fd-when-spawning.patch"
+b986e7d72ad246bdff01c18129e9e12cde88fe4c53aacd6550c6ab32a16dcc1b 0001-core-socket-common-socket-creation-function-for-bind.patch
+445a145f48d79b808d0d2664d23fb9c8bcb5836cc00967e03387e8698681074b 0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
+96d782e52b9edf835c6aa71c4ffc79e90f20022cf16dc2f0f9bf628a4aefd2fe 0003-core-socket-move-listen-queue-size-checking-to-creat.patch
+63c3775d20cd1905bda1c086132fa10a0b70e9c80513f854d09342c071f5b3cd 0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
+135927e845ea5405cb11894f9a2989ac425db9a3b4242f7d1a916c47a163cb7a 0005-option-for-closing-server-sockets-when-spawning.patch"
sha512sums="72d9b3d8107496fe405a435f6f9554ee841764b46918497e6aa2c928a4b8fe0bb520aa4edf72c3c9facbfa9cd88706277c8224e315a1b73d9e4a78bd37b9a7a0 uwsgi-1.9.20.tar.gz
ab9dc6277bd05821287f6f8beb3ac2504f0e41db38e11b4d2884ac026f14ac7bfaaca138f045afa712d4f2843f94de105bf0d43fad35d18679ac33b507cd187e uwsgi.initd
9f00afb2aa574bbc59040f945475712b8c40da0c06eeb5699de5510aa116148e35ab0429fa891084cf0cd7868876d5a80e1601b7c85d0e2e9ea2a1f54cdde619 uwsgi.confd
-ec371dd534aa05a9a90ccebd02d1d76c49d3b5424a44f32be67d9ff9af69ae5d39f30f5744ab7c3e21542cb667840243d8fa30b8ad23845e0c46c22c19cc58c6 0001-core-socket-close-TCP-server-fd-when-spawning.patch"
+50828a048384aa5e71832e135f295cc44b39887c4adc22c273328726a10803c914da1d113d6dfbcd54058ed46ce9affd24219de4e21f91f8bb383926ffa29cc1 0001-core-socket-common-socket-creation-function-for-bind.patch
+41662a2f92b38788b3b7f4057ba5ec645dc448ca804c00b762997badd3652209a5edb853b2cbc43e5ed3a78e956c57c66c5f648406f0b775d018c84c756b69a2 0002-core-socket-move-socket-buffer-size-setting-to-creat.patch
+112e5702d89ed9a9bcbf1ae69f68faf14f50837f787c9dc219fa16c8e55c94db2e668c735cb5220bcb1c7349b1b4da0479d72e2dfe1609c7ad38418e7b49106f 0003-core-socket-move-listen-queue-size-checking-to-creat.patch
+4ea108f19174b00146f9948b7c9e3272299c7e2cbfaf339753866971e94d8ccf6ba914d2a6d5064f32a33424b97099aac97c31bee3b5eba64bee7bd321c2a8ad 0004-core-socket-move-SO_REUSEADDR-setting-to-create_serv.patch
+d04869f43bd91c8117698f4ff9f775766afef7b9849b757dc43357a247e09d903b6b6561391d86bfcfda75f84c7924f5b5df7f5091c32dac0ce15634f69c4659 0005-option-for-closing-server-sockets-when-spawning.patch"