diff --git a/CHANGELOG b/CHANGELOG index ea0ec9c6..9b73e4a3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -60,6 +60,10 @@ HISTORY ++ Bugfixes: + 2009-02-11 Simon Goldschmidt + * opt.h, api_msg.c: added configurable default valud for netconn->recv_bufsize: + RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv()) + 2009-02-10 Simon Goldschmidt * tcp.c: fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD: Accepts_pending is decrease on a corresponding listen pcb when a connection diff --git a/src/api/api_msg.c b/src/api/api_msg.c index 7557c68a..4bb4e2c2 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -532,7 +532,7 @@ netconn_alloc(enum netconn_type t, netconn_callback callback) conn->recv_timeout = 0; #endif /* LWIP_SO_RCVTIMEO */ #if LWIP_SO_RCVBUF - conn->recv_bufsize = INT_MAX; + conn->recv_bufsize = RECV_BUFSIZE_DEFAULT; #endif /* LWIP_SO_RCVBUF */ return conn; } diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h index 8fd94423..0eb57b6f 100644 --- a/src/include/lwip/opt.h +++ b/src/include/lwip/opt.h @@ -1115,6 +1115,13 @@ #define LWIP_SO_RCVBUF 0 #endif +/** + * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. + */ +#ifndef RECV_BUFSIZE_DEFAULT +#define RECV_BUFSIZE_DEFAULT INT_MAX +#endif /* RECV_BUFSIZE_DEFAULT */ + /** * SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! */