diff options
-rw-r--r-- | sys/kern/uipc_sockbuf.c | 10 | ||||
-rw-r--r-- | sys/kern/uipc_socket2.c | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index bdeb344f3576..32f3b8c24abf 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -70,6 +70,12 @@ static u_long sb_max_adj = static u_long sb_efficiency = 8; /* parameter for sbreserve() */ +#ifdef REGRESSION +static int regression_sonewconn_earlytest = 1; +SYSCTL_INT(_regression, OID_AUTO, sonewconn_earlytest, CTLFLAG_RW, + ®ression_sonewconn_earlytest, 0, "Perform early sonewconn limit test"); +#endif + /* * Procedures to manipulate state flags of socket * and do appropriate wakeups. Normal sequence from the @@ -215,7 +221,11 @@ sonewconn(head, connstatus) ACCEPT_LOCK(); over = (head->so_qlen > 3 * head->so_qlimit / 2); ACCEPT_UNLOCK(); +#ifdef REGRESSION + if (regression_sonewconn_earlytest && over) +#else if (over) +#endif return (NULL); so = soalloc(M_NOWAIT); if (so == NULL) diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index bdeb344f3576..32f3b8c24abf 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -70,6 +70,12 @@ static u_long sb_max_adj = static u_long sb_efficiency = 8; /* parameter for sbreserve() */ +#ifdef REGRESSION +static int regression_sonewconn_earlytest = 1; +SYSCTL_INT(_regression, OID_AUTO, sonewconn_earlytest, CTLFLAG_RW, + ®ression_sonewconn_earlytest, 0, "Perform early sonewconn limit test"); +#endif + /* * Procedures to manipulate state flags of socket * and do appropriate wakeups. Normal sequence from the @@ -215,7 +221,11 @@ sonewconn(head, connstatus) ACCEPT_LOCK(); over = (head->so_qlen > 3 * head->so_qlimit / 2); ACCEPT_UNLOCK(); +#ifdef REGRESSION + if (regression_sonewconn_earlytest && over) +#else if (over) +#endif return (NULL); so = soalloc(M_NOWAIT); if (so == NULL) |