Index: src/api/api_lib.c =================================================================== RCS file: /sources/lwip/lwip/src/api/api_lib.c,v retrieving revision 1.72 diff -w -b -u -3 -p -r1.72 api_lib.c --- src/api/api_lib.c 1 Nov 2007 17:37:51 -0000 1.72 +++ src/api/api_lib.c 1 Nov 2007 20:19:16 -0000 @@ -89,6 +89,9 @@ netconn *netconn_new_with_proto_and_call #if LWIP_SO_RCVTIMEO conn->recv_timeout = 0; #endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVBUF + conn->recv_bufsize = (u32_t)(-1); +#endif /* LWIP_SO_RCVBUF */ msg.function = do_newconn; msg.msg.msg.n.proto = proto; Index: src/api/api_msg.c =================================================================== RCS file: /sources/lwip/lwip/src/api/api_msg.c,v retrieving revision 1.74 diff -w -b -u -3 -p -r1.74 api_msg.c --- src/api/api_msg.c 1 Nov 2007 17:37:51 -0000 1.74 +++ src/api/api_msg.c 1 Nov 2007 20:24:13 -0000 @@ -69,7 +69,12 @@ recv_raw(void *arg, struct raw_pcb *pcb, conn = arg; +#if LWIP_SO_RCVBUF + if ((conn != NULL) && (conn->recvmbox != SYS_MBOX_NULL) && + (((u32_t)(conn->recv_avail) + (u32_t)(p->tot_len))<=conn->recv_bufsize)) { +#else /* LWIP_SO_RCVBUF */ if ((conn != NULL) && (conn->recvmbox != SYS_MBOX_NULL)) { +#endif /* LWIP_SO_RCVBUF */ buf = memp_malloc(MEMP_NETBUF); if (buf == NULL) { return 0; @@ -108,7 +113,12 @@ recv_udp(void *arg, struct udp_pcb *pcb, conn = arg; +#if LWIP_SO_RCVBUF + if ((conn == NULL) || (conn->recvmbox == SYS_MBOX_NULL) || + (((u32_t)(conn->recv_avail) + (u32_t)(p->tot_len)) > conn->recv_bufsize)) { +#else /* LWIP_SO_RCVBUF */ if ((conn == NULL) || (conn->recvmbox == SYS_MBOX_NULL)) { +#endif /* LWIP_SO_RCVBUF */ pbuf_free(p); return; } @@ -340,6 +350,9 @@ accept_function(void *arg, struct tcp_pc #if LWIP_SO_RCVTIMEO newconn->recv_timeout = 0; #endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVBUF + newconn->recv_bufsize = (u32_t)(-1); +#endif /* LWIP_SO_RCVBUF */ sys_mbox_post(conn->acceptmbox, newconn); return ERR_OK; Index: src/include/lwip/api.h =================================================================== RCS file: /sources/lwip/lwip/src/include/lwip/api.h,v retrieving revision 1.33 diff -w -b -u -3 -p -r1.33 api.h --- src/include/lwip/api.h 1 Nov 2007 17:37:51 -0000 1.33 +++ src/include/lwip/api.h 1 Nov 2007 20:19:16 -0000 @@ -114,6 +114,9 @@ struct netconn { #if LWIP_SO_RCVTIMEO int recv_timeout; #endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVBUF + u32_t recv_bufsize; +#endif /* LWIP_SO_RCVBUF */ u16_t recv_avail; /** TCP: when data passed to netconn_write doesn't fit into the send buffer, this temporarily stores the message. */ ***** CVS exited normally with code 1 *****