History log of /seL4-camkes-master/projects/lwip/src/api/api_msg.c
Revision Date Author Comments
# eeb2218b 18-Jul-2018 Dirk Ziegelmeier <dziegelmeier@de.pepperl-fuchs.com>

Revert "Test / RFC: Reformat a few files using clang-format"

This reverts commit 8b4a8159a898795ef0fc9226dae1ce66531ad487.

We do not want to do this shortly before a release. Reformatting (buggy reformatting) may introduce new bugs.


# 8b4a8159 17-Jul-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Test / RFC: Reformat a few files using clang-format

Does it compile? Does it look good (enough)?


# 9992b48e 20-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix compiling with LWIP_NOASSERT defined

See bug #54157


# 3abc8ae1 18-Apr-2018 goldsimon <goldsimon@gmx.de>

LWIP_NETCONN_FULLDUPLEX: unblock rx threads on close

Threads blocked on the rx mbox are counted and on close,
one "netconn closed" message per thread is posted to the mbox
to ensure all threads are woken.

The netconn can then be safely deleted. In socket API, "fd_used"
and "fd_free_pending" help with auto-deleting the netconn.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# 41fea4ad 12-Apr-2018 goldsimon <goldsimon@gmx.de>

sockets: change closing: netconn is freed when socket is closed, not before

This is necessary to implement fullduplex sockets that are closed asynchronously:
the netconn in the socket must not be freed before all threads have given up
using it.

We now call the first part of 'netconn_delete()' (moved to 'netconn_prepare_delete()')
from lwip_close() and only actually end up calling 'netconn_free()' from
'free_socket()', which might be called later if LWIP_NETCONN_FULLDUPLEX is enabled.

Signed-off-by: goldsimon <goldsimon@gmx.de>


# 61e90d9f 19-Dec-2017 Axel Lin <axel.lin@ingics.com>

Use pbuf_clone to replace pbuf_alloc+pbuf_copy

Use pbuf_clone() to simplify the code a bit.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 245a6835 15-Nov-2017 goldsimon <goldsimon@gmx.de>

fixed bug #52403: netconn: FIN may be sent instead of RST when TCP netconn is closed with pending data in recv_mbox


# d39e8cd8 29-Oct-2017 Joel Cunningham <joel.cunningham@me.com>

docs: replace old reference to TCPIP_APIMSG with netconn_apimsg


# 2b977a4a 17-Sep-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Reformat api_msg.c using astylerc


# 2e4867fc 23-Aug-2017 Axel Lin <axel.lin@ingics.com>

api_msg: Remove superfluous NETIF_NO_INDEX checking

netif_get_by_index() returns NULL if idx is NETIF_NO_INDEX.
So remove the superfluous NETIF_NO_INDEX checking for msg->msg.jl.if_idx
before calling netif_get_by_index().

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Dirk Ziegelmeier <dirk@ziegelmeier.net>


# f457769f 21-Aug-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add netconn_join_leave_group_netif() that takes netif index as argument


# 5d2be346 01-Aug-2017 Joel Cunningham <joel.cunningham@me.com>

docs: update remaining api_msg_msg references

This updates some remaining references to the old struct api_msg_msg
(renamed to struct api_msg) in comment blocks


# 44f7a3cb 05-Jul-2017 goldsimon <goldsimon@gmx.de>

work on -Wconversion...


# d4c8a1ac 31-May-2017 Joel Cunningham <joel.cunningham@me.com>

netconn: switch gethostbyname to use tcpip_send_msg_wait_sem (task #14523)

This switches netconn_gethostbyname to use tcpip_send_msg_wait_sem to
take advantage of core locking support when enabled.

tcpip_send_msg_wait_sem handles blocking for the non-core locking case,
so we can remove the manual blocking in netconn_gethostbyname. For the
core locking case, we need to block if waiting on DNS callback. To
achieve this, we unlock the core and wait in lwip_netconn_do_gethostbyname.
This is the similar approach that netconn_write takes when it needs to
block to continue the write (see lwip_netconn_do_write)

This improves performance in the core locking case and is no change
for the non-core locking case


# 0df2c4f2 31-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Map {tcp, udp, raw}_bind_netif() functions to netconn API


# 2f117add 25-Apr-2017 Joel Cunningham <joel.cunningham@me.com>

sockets: task #14247, add CMSG and IP_PKTINFO

This commit adds CMSG infrastructure (currently used with recvmsg) and
the IP_PKTINFO socket option.

In order to use IP_PKTINFO, set LWIP_NETBUF_RECVINFO to 1

Unit test is added to verify this feature


# 2358a5ac 20-Apr-2017 goldsimon <goldsimon@gmx.de>

lwip_netconn_do_close_internal: 'close' -> 'shut_close': don't override global function names (why is this reported only now?)


# 1ada106d 20-Apr-2017 goldsimon <goldsimon@gmx.de>

netconn_tcp_recvd: take size_t, not u32_t


# 302d84f5 19-Apr-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Try to fix compile without TCP (reported by Axel Lin)


# 0952e618 18-Apr-2017 goldsimon <goldsimon@gmx.de>

netconn_drain(): use lwip_netconn_is_err_msg() on acceptmbox, too.


# 0b2a6523 17-Apr-2017 Axel Lin <axel.lin@ingics.com>

api_msg: Use lwip_netconn_is_err_msg instead of NULL test in netconn_drain()

The NULL test no longer work after commit e0a2472706ee, it needs to test with
lwip_netconn_is_err_msg() instead.

Fixes: e0a2472706ee ("netconn/sockets: remove fatal error handling, fix asynchronous error handling, ensure data before RST can be received")
Signed-off-by: Axel Lin <axel.lin@ingics.com>


# e0a24727 11-Apr-2017 goldsimon <goldsimon@gmx.de>

netconn/sockets: remove fatal error handling, fix asynchronous error handling, ensure data before RST can be received


# ba20cd22 22-Mar-2017 goldsimon <goldsimon@gmx.de>

api_msg:accept_function(): fix typo


# eba1b971 22-Mar-2017 Mikhail Lappo <mikhail.lappo@esrlabs.com>

Possible null-pointer dereference

In assertion the pointer that is potentialy
null is dereferenced. The check for null was
located after.


# 9e20fe2c 22-Mar-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Apply [patch #9287] Possible null-pointer dereference from Mikhail Lappo in a modified way
Moved the debug output to a location where we know that newpcb != NULL
Fixes possible NULL pointer dereferencing in debug message output


# dd4ded39 03-Mar-2017 Joel Cunningham <joel.cunningham@me.com>

do_writemore: fix blocking bug

A bug was introduced in the atomic vector feature for blocking netconns
where if we couldn't write the entire vector due to send buffer being
full (write_more is 0), we would not update the vector state and then
when sent_tcp() is called, it would actually re-send the previous vector
and if additional calls were required to finish the write, msg.w.offset
would eventually exceed msg.w.len, This was found by testing "stats"
from the shell and hitting the LWIP_ASSERT in do_writemore() that
checks offset < len

The fix simply updates the vector state after every ERR_OK return from
tcp_write(). While not all cases (non-blocking sockets) need to update
the state in this case, it keeps the logic simple and also makes
debugging simpler because you don't have stale vector state at any
point


# 2980f7cc 27-Feb-2017 Joel Cunningham <joel.cunningham@me.com>

Vectorize netconn_write for TCP

This commit adds support to the netconn write APIs to take an input of
vectors instead of a single data pointer

This allows vectors sent on a TCP connection via sendmsg to be treated
atomically. The set of vectors is segmented into as much data as can
fit into the send buffer and then the TCP output function is called

Previously, each vector was passed to netconn_write_partly and tcp_write
segmented it into its own packet, which was then it was sent via
tcp_output (if not Nagleing)

This commit adds vector support to lwip_netconn_do_writemore() which
is the meat of the TCP write functionality from netconn/sockets layer.
A new netconn API netconn_write_vectors_partly() takes a set of vectors
as input and hooks up to do_writemore()

This commit also defines IOV_MAX because we are limited to only
supporting 65535 vectors due to choice of u16_t for the vector count


# 36fa1a97 24-Feb-2017 Joel Cunningham <joel.cunningham@me.com>

lwip_netconn_do_writemore() cleanups

This commit makes a couple of cleanups discussed in patch #8882:
1) msg.w.offset should not be set to 0 in the error case. It is
only valid when err == ERR_OK
2) Remove out-of-date comment which indicated the entire write had
completed (not true for non-blocking write)

This also updates the documentation on offset to include that offset
is only valid when err == ERR_OK


# 4c76fd50 17-Feb-2017 Joel Cunningham <joel.cunningham@me.com>

Move write_offset from struct netconn to struct api_msg

This moves the write_offset variable from struct netconn to struct api_msg

This optimizes the storage by only having the space claimed when it is
needed (during a netconn_write_partly() call) and not throughout the
lifetime of the netconn

This also reduces code space/execution by not having to separately manage
clearing/checking write_offset from the current_msg pointer

Lastly, we also save execution by using msg.w.offset as the output
rather than marshaling the result to msg.w.len. Previously, len was used
as input length of dataptr and output for the write operation.
netconn_write_partly() also has access to msg.w.offset, so we can use
that


# 6dca6642 16-Feb-2017 sg <goldsimon@gmx.de>

LWIP_NETCONN_FULLDUPLEX: fixed shutdown during write (bug #50274)


# 2b1ebda6 10-Jan-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Minor correction to last patch: Avoid #including socket.h in api_msg.c


# 5e9df2c6 10-Jan-2017 Knut Andre Tidemann <Knut.Andre.Tidemann@jotron.com>

lwip: fix broken default ICMPv6 handling of checksums.

ICMPv6 should always have checksum generated for it as per RFC 3542
chapter 3.1.


# 98fc82fa 31-Dec-2016 sg <goldsimon@gmx.de>

added function tcp_listen_with_backlog_and_err() to get the error reason when listening fails (bug #49861)


# 5030fa81 23-Nov-2016 Joel Cunningham <joel.cunningham@me.com>

bug #49684, api_msg: treat non-blocking ERR_MEM as ERR_WOULDBLOCK

This corrects a case in lwip_netconn_do_writemore() where if a
non-blocking socket receives ERR_MEM in a call to tcp_write(), it would
return ERR_MEM, which would result in ENOMEM coming out of the socket
layer

This case can be gracefully handled by returning ERR_WOULDBLOCK since the
socket is already marked as no longer writable and sent_tcp/poll_tcp will
mark the socket as writable again based on available buffer space

This is very similiar to how ERR_MEM is resolved for blocking sockets


# 5d5eeca0 17-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Once more: Try fix compile with clang


# 792224ea 17-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Try to fix compile error with clang (found by Erik's Travis-CI)


# 1712b06a 16-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on dual-stack netconn
IPv6 netconns are created as IPADDR_TYPE_ANY raw/udp/tcp PCBs internally
bind, connect and sendto now accept IPv6 mapped IPv4 addresses or IPv4 addresses as argument
getaddr and receive functions now return IPv6 mapped IPv4 addresses instead of IPv4 addresses
This behavior is close to BSD socket API


# b70ddf7b 02-Nov-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup unmap_ipv6_mapped_ipv4() macro


# 2f37dc06 31-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

api_msg.c: Partly add support for IPv6 mapped IPv4 addresses
- lwip_netconn_do_getaddr(): Convert IPv4 addresses to IPv6 mapped IPv4 addresses
- lwip_netconn_do_send(): Support IPv6 mapped IPv4 addresses
- Not done: connect(), bind()


# 4dffe521 13-Oct-2016 Axel Lin <axel.lin@ingics.com>

api_msg.c: Trivial code cleanup

Slightly improve readability by testing apiflags with NETCONN_DONTBLOCK.
Also remove an empty else clause.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# f6e27940 08-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Make lwIP compile with clang -Wdocumentation -> several documentation fixes


# cdc97d27 03-Oct-2016 goldsimon <goldsimon@gmx.de>

Correctly fix bug #49209: netconn_drain() fails to handle 'netconn_aborted' pointer


# d9c6badc 03-Oct-2016 goldsimon <goldsimon@gmx.de>

Revert "Fixed bug #49209: netconn_drain() fails to handle 'netconn_aborted' pointer"

This reverts commit 0e2354e658d9dc193d60048a8394517a41ca64ff.


# 0e2354e6 27-Sep-2016 goldsimon <goldsimon@gmx.de>

Fixed bug #49209: netconn_drain() fails to handle 'netconn_aborted' pointer


# 90a656ed 23-May-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix several doxygen errors all over the code


# 16c70dd6 05-Apr-2016 sg <goldsimon@gmx.de>

fixed bug# 43739 (Accept not reporting errors about aborted connections): netconn_accept() returns ERR_ABRT (sockets: ECONNABORTED) for aborted connections, ERR_CLSD (sockets: EINVAL) if the listening netconn is closed, which better seems to follow the standard


# 27f03798 25-Mar-2016 sg <goldsimon@gmx.de>

Fixed possible problems with tcp_backlog_delayed/tcp_backlog_accepted


# 7721b201 23-Mar-2016 sg <goldsimon@gmx.de>

call accept-callback with ERR_MEM when allocating a pcb fails on passive open to inform the application about this error; ATTENTION: applications have to handle NULL pcb in accept callback!


# dd80759b 22-Mar-2016 sg <goldsimon@gmx.de>

tcp: changed accept handling to be done internally: the application does not have to call tcp_accepted() any more. Instead, when delaying accept (e.g. sockets do), call tcp_backlog_delayed()/tcp_backlog_accepted() (fixes bug #46696)


# 44e1a2d8 18-Mar-2016 sg <goldsimon@gmx.de>

define tcp_backlog_set() as dummy-define when backlog feature is disable


# 149bb368 17-Mar-2016 sg <goldsimon@gmx.de>

fixed bug #47448 (netconn/socket leak if RST is received during close)


# 93ccba9b 17-Mar-2016 Joel Cunningham <joel.cunningham@me.com>

don't fail closing a socket/netconn when failing to allocate the FIN segment; blocking the calling thread for a while is better than risking leaking a netconn/socket (see bug #46701)

Signed-off-by: sg <goldsimon@gmx.de>


# d38cdccb 16-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netconn API: Remove api_msg wrapper struct, it is not needed any more


# 2575c7fb 16-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netconn API: Cleanup, remove lots of #defines, take advantage of new tcpip_send_api_msg function feature to abstract core locking away


# af1978fa 07-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement generic API message handling
Add generic tcpip_send_api_msg function
Let netif API and netconn API use it
Decouple tcpip.c and tcpip_priv.h from netif API


# 094cdf1c 04-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netconn: Create API macros to get/set IPV6ONLY flag


# bd0b51c9 03-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix my previous netconn_do_listen changes in lwip_netconn_do_listen


# bee5515e 03-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netconn API: Reimplement dual-stack API to be socket-like.

When IPv6 ANY address is used and the NETCONN_FLAG_IPV6_V6ONLY is NOT set, bind/listen on/to IP_ANY_TYPE


# 0c673b6a 02-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement new style TCP dual-stack in netconn API


# 5404ce3c 28-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement support for UDP IP_ANY_TYPE in netconn API


# 8cb64698 18-Feb-2016 Joel Cunningham <joel.cunningham@me.com>

Allow backlog to be updated

This commit adds support to the sockets and netconn layer to update the
backlog by calling listen when the netconn is already in the listen state.
When backlog is not enabled, the call returns successfully

This commit also introduces a macro for setting the backlog value that
prevents a 0 sized (invalid) backlog


# 880f1008 22-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Together with Simon: Eliminate last instances of isipv6 member in pcbs;
Don't allow NULL pointers (IPv4 ANY) in connect() and sendto() functions as destinations since this does not make sense.


# 9a97a80e 18-Feb-2016 sg <goldsimon@gmx.de>

Fixed bug #47154 lwip_netconn_do_writemore doesn't clear conn->write_offset on fatal/routing error.


# 78a36df9 10-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Netconn: Fix potential NULL pointer dereference (found by Coverity)


# 11faa814 17-Dec-2015 Joel Cunningham <joel.cunningham@me.com>

Fix blocking close with LWIP_SO_SNDTIMEO

This fixes a bug in close when LWIP_SO_SNDTIMEO is enabled, but
the option is not in use on the socket

A simple mis-typed comparison against zero would cause the close_timeout
to get set to zero if conn->send_timeout was 0

The intended check was to over-ride the default close timeout if a
send timeout had been specified via SO_SNDTIMEO


# 031de097 11-Dec-2015 Axel Lin <axel.lin@ingics.com>

Trivial comment fix for lwip_netconn_do_disconnect()

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# bd4c4b59 30-Nov-2015 Axel Lin <axel.lin@ingics.com>

Use SYS_ARCH_SET macro at appropriate places

Use SYS_ARCH_SET to simplify the code a bit.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# ecf9d25e 10-Nov-2015 Axel Lin <axel.lin@ingics.com>

api_msg_c: remove superfluous NETCONN_SET_SAFE_ERR call before TCPIP_APIMSG_ACK

The TCPIP_APIMSG_ACK will call NETCONN_SET_SAFE_ERR for both
LWIP_TCPIP_CORE_LOCKING and !LWIP_TCPIP_CORE_LOCKING cases.
So remove superfluous NETCONN_SET_SAFE_ERR call before TCPIP_APIMSG_ACK.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# c12fa7b4 09-Oct-2015 sg <goldsimon@gmx.de>

started to move "private" header files containing implementation details to "lwip/priv/" include directory to seperate the API from the implementation.


# fc1db873 09-Oct-2015 sg <goldsimon@gmx.de>

Fixed compiling api with LWIP_NETCONN_SEM_PER_THREAD==1 && LWIP_MPU_COMPATIBLE==1


# b401f425 07-Oct-2015 goldsimon <goldsimon@gmx.de>

minor: fixed coding style (lwip style)


# 2b971400 06-Oct-2015 sg <goldsimon@gmx.de>

minor: coding style


# 22df34fc 06-Oct-2015 sg <goldsimon@gmx.de>

minor/coding style: removed spaces before line ending (from file header)


# 490581a0 06-Oct-2015 sg <goldsimon@gmx.de>

minor/coding style: removed spaces before line ending


# ae7eeda8 30-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

dns_found_callback should take const IP addr


# c7172310 24-Sep-2015 goldsimon <goldsimon@gmx.de>

Removed ip_2_ip4/6_c const macros again now that ip_2_ip4/6 macros keep the original const'ness


# f62022cd 17-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Compiler warning fixes (mostly constness in dual-stack configurations)


# 77270adb 07-Sep-2015 sg <goldsimon@gmx.de>

Changed dns_gethostbyname_addrtype() to always be a function, fixed code for C PP :-(


# 196120fa 04-Sep-2015 goldsimon <goldsimon@gmx.de>

worked on task #12243 (Add support for AAAA/IPv6 records to DNS)


# e171b4e3 18-Aug-2015 sg <goldsimon@gmx.de>

Fixed usages of SYS_SEM_NULL after using pointers everywhere


# 4dc3c7a6 03-Aug-2015 goldsimon <goldsimon@gmx.de>

Fixed warnings about NULL check not required (ip_addr_isany) and implicit conversion (~)


# 44af6978 23-Apr-2015 Sylvain Rochet <gradator@gradator.net>

netconn: api_msg.c, fixed warning about unused state variable by using it a little more


# 902d190a 22-Apr-2015 goldsimon <goldsimon@gmx.de>

Many const fixes throughout the stack (although these are not all, yet)


# c1c65777 12-Apr-2015 sg <goldsimon@gmx.de>

worked on task #13480: added LWIP_IPV4 define - IPv4 can be disabled, leaving an IPv6-only stack (SNMP is still missing)


# ce7e31cd 09-Apr-2015 sg <goldsimon@gmx.de>

task #12722 (improve IPv4/v6 address handling): renamed ip_addr_t to ip4_addr_t, renamed ipX_addr_t to ip_addr_t and added IP version;
ip_addr_t is used for all generic IP addresses for the API, ip(4/6)_addr_t are only used internally or when initializing netifs or when calling version-related functions


# 9eb900c4 19-Mar-2015 sg <goldsimon@gmx.de>

fixed race conditions in assigning netconn->last_err (fixed bugs #38121 and #37676)


# 3e8ac309 25-Feb-2015 sg <goldsimon@gmx.de>

Fixed bug #44297 (CORE_LOCKING was broken some days ago); fixed that netconn_connect still used message passing for LWIP_TCPIP_CORE_LOCKING==1


# ec5cf859 22-Feb-2015 sg <goldsimon@gmx.de>

Continued chrysn's work: changed nearly all functions taking 'ip(X)_addr_t' pointer to take const pointers (changed user callbacks: raw_recv_fn, udp_recv_fn; changed port callbacks: netif_output_fn, netif_igmp_mac_filter_fn)


# 2cfc9e28 18-Feb-2015 sg <goldsimon@gmx.de>

"Not connected" shouldn't be fatal (as opposed to "closed")


# 604a92dc 17-Feb-2015 sg <goldsimon@gmx.de>

fixed bug #38853 "connect() use a wrong errno": return ERR_ALREADY/EALRADY during connect, ERR_ISCONN/EISCONN when already connected


# 0963e91c 17-Feb-2015 goldsimon <goldsimon@gmx.de>

api_msg_c: fixed compiler warning (added brackets in if statement)


# 5d13b5a2 17-Feb-2015 goldsimon <goldsimon@gmx.de>

fixed bug #37614 "Errors from ipX_output are not processed". Now tcp_output(_segment) checks for the return value of ipX_output and does not try to send more on error. A netif driver can call tcp_txnow() (from tcpip_thread!) to try to send again if TX buffers are available again.


# 276e35ec 11-Feb-2015 sg <goldsimon@gmx.de>

Fixed a bug in linger-closing when LWIP_TCPIP_CORE_LOCKING==1


# 7ff9825f 11-Feb-2015 sg <goldsimon@gmx.de>

started to implement fullduplex sockets/netconns (note that this is highly unstable yet!)


# 6c3f6cfd 10-Feb-2015 sg <goldsimon@gmx.de>

netconn/socket api: fixed bug #44225 "closing TCP socket should time out eventually", implemented task #6930 "Implement SO_LINGER": closing TCP sockets times out after 20 seconds or after the configured SND_TIMEOUT or depending on the linger settings; fixed that netconn_close/netconn_delete still used message passing for LWIP_TCPIP_CORE_LOCKING==1


# ec68aaf4 27-Jan-2015 sg <goldsimon@gmx.de>

fixed that SHUT_RD followed by SHUT_WR was different to SHUT_RDWR, fixed return value of lwip_netconn_do_close on unconnected netconns


# 24df78bc 20-Jan-2015 goldsimon <goldsimon@gmx.de>

fixed that lwip_netconn_do_delconn() did not set msg->err on success (just introduced that bug this weekend...)


# cacdbb52 10-Dec-2014 sg <goldsimon@gmx.de>

added option LWIP_NETCONN_SEM_PER_THREAD to use a semaphore per thread instead of using one per netconn and per select call


# aecbce28 21-Oct-2014 goldsimon <goldsimon@gmx.de>

fixed bug #38219 Assert on TCP netconn_write with sndtimeout set


# 4b9883a5 15-Sep-2014 Simon Goldschmidt <goldsimon@gmx.de>

DNS: does not support IPv6, may return a name cased different than the request (when multiple requests are combined to one)


# 3c40d93f 02-Sep-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #43110 (call getpeername() before listen() will cause a error) by re-sorting the error numbers and letting listen() continue on ERR_CONN


# 3f016fcc 06-Apr-2014 Simon Goldschmidt <goldsimon@gmx.de>

Multiple small/minor issues: bug #36492 Static Analysis on code 1.4.0


# c6063585 27-Feb-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #38404 getpeeraddr returns success on unconnected/listening TCP sockets


# e2c2afbb 20-Feb-2014 Simon Goldschmidt <goldsimon@gmx.de>

patch #7885: modification of api modules to support FreeRTOS-MPU (don't pass stack-pointers to other threads) (based on patch by Artem Pisarenko)


# 097bc4c6 24-Apr-2013 Simon Goldschmidt <goldsimon@gmx.de>

patch #8008 Fix a potential null pointer dereference in assert


# a4a41b90 26-Sep-2012 goldsimon <goldsimon@gmx.de>

fixed bug #37405 'err_tcp()' uses already freed 'netconn' object


# a0707510 13-Aug-2012 goldsimon <goldsimon@gmx.de>

fixed bug #37052: "netconn_alloc: undefined netconn_type" assertion skipped


# e65202f8 03-Jul-2012 James Smith <jsmith@ecoscentric.com>

Applied patch by James Smith to implement IPV6_V6ONLY support in
sockets and netconns.

Change-Id: I2ecd8e218703114890b2d678cc1ccf997a16f5e3


# 8dbf572e 25-Mar-2012 goldsimon <goldsimon@gmx.de>

Fixed bug #35817: do_connect() invalidly signals op_completed for UDP/RAW with LWIP_TCPIP_CORE_LOCKING==1


# f8af1a74 25-Mar-2012 goldsimon <goldsimon@gmx.de>

fixed bug #35931: Name space pollution in api_msg.c and netifapi.c


# e039d410 17-Oct-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #34569: shutdown(SHUT_WR) crashes netconn/socket api


# a2aa43a4 21-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

Implemented timeout on send (TCP only, bug #33820)


# d0877153 03-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

netconn_alloc(): return on invalid protocol instead of initializing mbox size to 0


# f64808c3 24-Aug-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #33956 Wrong error returned when calling accept() on UDP connections


# b5305d5a 12-Aug-2011 Ivan Delamer <delamer@inicotech.com>

Initialize recvmbox size for undefined netconn type, to supress
compiler warning.

Change-Id: I14c3f1786a8ca3513b5d4cf375c4951e4c09ebd6


# 46af0d38 22-Jul-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #31084 (socket API returns always EMSGSIZE on non-blocking sockets if data size > send buffers) -> now lwip_send() sends as much as possible for non-blocking sockets and only returns EWOULDBLOCK if the buffers are full


# 2aec3a97 28-May-2011 goldsimon <goldsimon>

use PCB_IS_IPV6(pcb) instead of pcb->isipv6 everywhere


# 6865806b 25-May-2011 goldsimon <goldsimon>

Combined IPv4 and IPv6 code where possible, added defines to access IPv4/IPv6 in non-IP code so that the code is more readable.


# 4bfbe7eb 17-May-2011 goldsimon <goldsimon>

... and finally, we got a first working version of a dual-stack lwIP runnin IPv4 and IPv6 in parallel - big thanks to Ivan Delamer! (this is work in progress, so please beware, test a lot and report problems!)


# 72036801 14-Mar-2011 goldsimon <goldsimon>

fixed bug #31748 (Calling non-blocking connect more than once can render a socket useless) since it mainly involves changing "FATAL" classification of error codes: ERR_USE and ERR_ISCONN just aren't fatal.


# effcb90f 20-Dec-2010 goldsimon <goldsimon>

Mreged back changes that were lost during the savannah hack 3 weeks ago (using the sources from http://git.infradead.org/users/dwmw2/lwip.git)


# d73262a0 29-Jul-2010 goldsimon <goldsimon>

Fixed compilation with TCP or UDP disabled.


# 48be5463 30-Jun-2010 goldsimon <goldsimon>

fixed bug #30300 (shutdown parameter was not initialized in netconn_delete)


# 6929a786 24-Jun-2010 goldsimon <goldsimon>

Fixed bug #10088: Correctly implemented shutdown at socket level.


# ddd2b69f 12-Jun-2010 goldsimon <goldsimon>

bug #29976: forgot some places using the changed IP address (copy vs. pointer)


# f7479781 22-May-2010 goldsimon <goldsimon>

bug #27352: removed packing from ip_addr_t, the packed version is now only used in protocol headers. Added global storage for current src/dest IP address while in input functions.


# 4b7288e8 02-May-2010 goldsimon <goldsimon>

use checksum-on-copy for sending UDP data for LWIP_NETIF_TX_SINGLE_PBUF==1


# 51061fb6 21-Apr-2010 goldsimon <goldsimon>

Fixed bug #29617 (sometime cause stall on delete listening connection)


# 846a2fb9 26-Mar-2010 goldsimon <goldsimon>

Fixed compiling with different options disabled (TCP/UDP), triggered by bug #29345; don't allocate acceptmbox if LWIP_TCP is disabled


# 46b7bd6e 26-Mar-2010 goldsimon <goldsimon>

Make functions static where applicable, add default cases to switches where applicable, prevent old-style function prototypes (without arguments)


# 0a49f2e0 19-Mar-2010 goldsimon <goldsimon>

Corrected spelling of ERR_WOULDBLOCK (D was missing)


# 0b5d60db 05-Mar-2010 goldsimon <goldsimon>

Correctly set TCP_WRITE_FLAG_MORE when netconn_write is split into multiple calls to tcp_write.


# 19a9b52c 21-Feb-2010 goldsimon <goldsimon>

Corrected comment


# 7c57ee0c 21-Feb-2010 goldsimon <goldsimon>

Use tcp_debug_state_str() instead of tcp_debug_print_state()


# 0792effc 13-Feb-2010 goldsimon <goldsimon>

task #7865 (implement non-blocking send operation)


# 0f05a6ae 13-Feb-2010 goldsimon <goldsimon>

Fixed compilation for LWIP_DNS==1 after changing sys layer


# 7ccf8cb7 13-Feb-2010 goldsimon <goldsimon>

Fixed compilation with LWIP_DNS==1 after changing sys layer


# c49a3ab2 13-Feb-2010 goldsimon <goldsimon>

Fixed compilation for LWIP_SO_RCVBUF==0


# bd3f86e5 12-Feb-2010 goldsimon <goldsimon>

Code layout: splitted long line


# c73b1b4f 12-Feb-2010 goldsimon <goldsimon>

Fixed bug #28865 (Cannot close socket/netconn in non-blocking connect)


# 0030d1ad 12-Feb-2010 goldsimon <goldsimon>

task #10139 (Prefer statically allocated memory): converted mbox and semaphore functions to take pointers to sys_mbox_t/sys_sem_t; converted sys_mbox_new/sys_sem_new to take pointers and return err_t; task #7212: Add Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use binary semaphores instead of mutexes - as before)


# 2d163179 12-Feb-2010 goldsimon <goldsimon>

struct netconn.socket is only used with LWIP_SOCKET; added comments


# 306f2203 09-Feb-2010 goldsimon <goldsimon>

Fixed bug #22110 (recv() makes receive window update for data that wasn't received by application); added function-like macros to correctly access/change conn->recv_timeout and conn->recv_bufsize


# a8459027 09-Feb-2010 goldsimon <goldsimon>

Merge 3 u8_t for netconn-internal status into one u8_t 'flags' to prevent waisting memory when adding more flags


# 5d360a67 04-Feb-2010 goldsimon <goldsimon>

Replaced struct ip_addr by typedef ip_addr_t to make changing the actual implementation behind the typedef easier.


# 855dcadf 29-Jan-2010 goldsimon <goldsimon>

Added except set support in select (patch #6860)


# e58f4c56 29-Jan-2010 goldsimon <goldsimon>

Add non-blocking support for connect (partly from patch #6860) plus many cleanups in socket & netconn API


# 32c16fad 28-Jan-2010 goldsimon <goldsimon>

igmp related: renamed netif pointers from 'interface' to 'netif' to not use keywords (or at least my editor highlights it as one...)


# 04a8b0f8 27-Jan-2010 goldsimon <goldsimon>

Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT and added tcp_sndqueuelen() - this fixes bug #28605


# e678e1bd 25-Jan-2010 goldsimon <goldsimon>

bug #28659: Missing casts


# dbcce3a4 23-Jan-2010 goldsimon <goldsimon>

bug #26523: Compiler Warnings


# 82318c0e 21-Jan-2010 goldsimon <goldsimon>

Fixed bug #28651 (tcp_connect: no callbacks called if tcp_enqueue fails) both in raw- and netconn-API


# 52389fc0 19-Jan-2010 goldsimon <goldsimon>

Fixed bug #27316 (netconn: Possible deadlock in err_tcp) by using sys_mbox_trypost in err_tcp


# 34139606 17-Jan-2010 goldsimon <goldsimon>

task #10102: "netconn: clean up conn->err threading issues" by adding error return value to struct api_msg_msg


# 97f797e8 14-Jan-2010 goldsimon <goldsimon>

do_connect(): set conn->err to an error if conn->pcb is NULL


# 9521f547 14-Jan-2010 goldsimon <goldsimon>

Another fix for bug #28562: Segfault @ err_tcp


# 0e38a52e 13-Jan-2010 goldsimon <goldsimon>

Again: Fixed bug #26672 (close connection when receive window = 0) by correctly draining recvmbox/acceptmbox


# 533e6b5f 08-Jan-2010 goldsimon <goldsimon>

Fixed bug #26672 (close connection when receive window = 0) by correctly draining recvmbox/acceptmbox


# 8a81cb4b 22-Nov-2009 goldsimon <goldsimon>

Fixed bug #27955: netconn_close may nether return when LWIP_TCPIP_CORE_LOCKING enabled


# a9cbdc14 07-Oct-2009 goldsimon <goldsimon>

patch #6888: Patch for UDP Netbufs to support dest-addr and dest-port


# 8a7c1c49 30-Aug-2009 goldsimon <goldsimon>

do_connect: LWIP_ERROR on invalid/disabled protocol


# cc4b968f 27-Jul-2009 goldsimon <goldsimon>

Fixed bug #27114: Missing #include in api_msg.c on LWIP 1.3.1RC1; added include <string.h>


# ce5699f4 09-Jul-2009 fbernon <fbernon>

minor changes: typos and coding style


# 1eee0be9 09-Jul-2009 kieranm <kieranm>

BUG23240 use signed counters for recv_avail and don't increment
counters until message successfully sent to mbox


# 2b87f899 25-Jun-2009 kieranm <kieranm>

BUG26722: initialise netconn write variables in netconn_alloc


# 9d5bf57d 18-Apr-2009 goldsimon <goldsimon>

fixed bug #25695: Segmentation fault in do_writemore()


# 14cb4eb7 16-Feb-2009 goldsimon <goldsimon>

fixed arguments of socket functions to match the standard; converted size argument of netconn_write to 'size_t' for that; fixed some warnings


# 8c7705bb 11-Feb-2009 goldsimon <goldsimon>

added configurable default valud for netconn->recv_bufsize: RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv())


# b0c61ffb 19-Dec-2008 goldsimon <goldsimon>

Reverted last changes since it's wrong when sizeof(int)==2...


# aa568727 19-Dec-2008 goldsimon <goldsimon>

patch #6699: fixed some warnings on platform where sizeof(int) == 2


# 1f3fe200 12-Nov-2008 jifl <jifl>

Correct commented description of do_recv().
Reported by Charles Landau on lwip-users.


# ae2d5266 15-Jul-2008 goldsimon <goldsimon>

removed invalid call to tcp_connect() in do_close_internal()


# 99db2441 14-Jul-2008 goldsimon <goldsimon>

fixed bug #23847: do_close_internal references freed memory


# 7774b57a 21-Mar-2008 fbernon <fbernon>

api_msg.c: fix wrong mailbox invalidate (NULL was used instead of SYS_MBOX_NULL). Spoted by Silas Boyd-Wickizer.


# 90cb4b4e 19-Mar-2008 goldsimon <goldsimon>

Corrected comment in do_writemore()


# afcf49ad 13-Mar-2008 fbernon <fbernon>

api_msg.c: minor change, fix warning.


# a2f18924 11-Mar-2008 fbernon <fbernon>

api_msg.c: fix the netbuf::addr field to point on the ip_src on the pbuf's copy (about bug#22530).


# 552106e2 12-Mar-2008 fbernon <fbernon>

api_msg.c: Fix bug #22530 "api_msg.c's recv_raw() does not consume data".


# 7518acf6 14-Jan-2008 fbernon <fbernon>

rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 "Enable to refuse data on a TCP_EVENT_RECV call". Important, behavior changes for the tcp_recv callback (see rawapi.txt).


# 55bcc20d 12-Jan-2008 fbernon <fbernon>

tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field netconn::sem per netconn::op_completed like suggested for the task #7490 "Add return value to sys_mbox_post".


# 9906e4c9 11-Jan-2008 fbernon <fbernon>

api_msg.c, opt.h: replace DEFAULT_RECVMBOX_SIZE per DEFAULT_TCP_RECVMBOX_SIZE, DEFAULT_UDP_RECVMBOX_SIZE and DEFAULT_RAW_RECVMBOX_SIZE (to optimize queues sizes), like suggested for the task #7490 "Add return value to sys_mbox_post".


# bceff76c 10-Jan-2008 fbernon <fbernon>

tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field netconn::mbox (sys_mbox_t) per netconn::sem (sys_sem_t) for the task #7490 "Add return value to sys_mbox_post".


# a41f113b 06-Jan-2008 goldsimon <goldsimon>

Added function netconn_free(), which deallocates all mboxes and frees the netconn (to be used from different places) - the PCB is not freed!


# 5941b3c8 05-Jan-2008 fbernon <fbernon>

sys_arch.txt, api.h, api_lib.c, api_msg.h, api_msg.c, tcpip.c, sys.h, opt.h: Introduce changes for task #7490 "Add return value to sys_mbox_post" with some modifications in the sys_mbox api: sys_mbox_new take a "size" parameters which indicate the number of pointers query by the mailbox. There is three defines in opt.h to indicate sizes for tcpip::mbox, netconn::recvmbox, and for the netconn::acceptmbox. Port maintainers, you can decide to just add this new parameter in your implementation, but to ignore it to keep the previous behavior. The new sys_mbox_trypost function return a value to know if the mailbox is full or if the message is posted. Take a look to sys_arch.txt for more details. This new function is used in tcpip_input (so, can be called in an interrupt context since the function is not blocking), and in recv_udp and recv_raw.


# 9c4daa31 04-Jan-2008 fbernon <fbernon>

Minor changes in lwip folder: fix some warnings, coding style, and rename "internal" netconn_alloc function.


# 32005617 04-Jan-2008 fbernon <fbernon>

rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, tcp.c, tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, limit the "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", add documentation in the rawapi.txt file.


# 1ed34774 21-Dec-2007 goldsimon <goldsimon>

tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c, sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API applications have to call 'tcp_accepted(pcb)' in their accept callback to keep accepting new connections.


# 48e62e25 21-Dec-2007 goldsimon <goldsimon>

sys.h, api_lib.c, api_msg.c, sockets.c: fix bug #21698: "netconn->recv_avail is not protected" by using new macros for interlocked access to modify/test netconn->recv_avail.


# 2b54da50 13-Dec-2007 fbernon <fbernon>

api_msg.c, err.h, err.c, sockets.c, dns.c, dns.h: replace "enum dns_result" by err_t type. Add a new err_t code "ERR_INPROGRESS".


# 113a52d0 02-Dec-2007 goldsimon <goldsimon>

fix bug #21656 (recvmbox problem in netconn API): always allocate a recvmbox in netconn_new_with_proto_and_callback. For a tcp-listen netconn, this recvmbox is later freed and a new mbox is allocated for acceptmbox. This is a fix for thread-safety and allocates all items needed for a netconn when the netconn is created.


# 6746beb2 29-Nov-2007 goldsimon <goldsimon>

Compacted code: moved the code creating a netconn (without pcb) from netconn_new_with_proto_and_callback to new (synchroneous) function netconn_alloc_with_proto_and_callback and call this function from netconn_new_with_proto_and_callback and accept_function.


# 03777ccb 27-Nov-2007 goldsimon <goldsimon>

Changed error handling: ERR_MEM, ERR_BUF and ERR_RTE are seen as non-fatal, all other errors are fatal. netconns and sockets block most operations once they have seen a fatal error.


# 3d9c76a6 24-Nov-2007 fbernon <fbernon>

Minor change (doxygen tags)


# 7797ada1 24-Nov-2007 goldsimon <goldsimon>

Added documentation


# dc515c7a 21-Nov-2007 goldsimon <goldsimon>

Fixed bug #20287: tcp_output_nagle sends too early. This fixes the nagle algorithm; nagle now also works for all raw API applications and has to be explicitly disabled with 'tcp_pcb->flags |= TF_NODELAY'


# f58515b5 19-Nov-2007 fbernon <fbernon>

api_msg.c, dns.h, dns.c: Implement DNS_DOES_NAME_CHECK option (check if name received match the name query), implement DNS_USES_STATIC_BUF (the place where copy dns payload to parse the response), return an error if there is no place for a new query, and fix some minor problems.


# edc46281 18-Nov-2007 fbernon <fbernon>

Minor changes on DNS client.


# e2cd201f 16-Nov-2007 goldsimon <goldsimon>

Added sequential dns resolver function for netconn api (netconn_gethostbyname)


# a4d14722 12-Nov-2007 fbernon <fbernon>

sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fixed bug #20900. Now, most of the netconn_peer and netconn_addr processing is done inside tcpip_thread context in do_getaddr.


# f3dbd986 06-Nov-2007 goldsimon <goldsimon>

Task #7410: Removed the need to include core header files in api.h (ip/tcp/udp/raw.h) to hide the internal implementation from netconn api applications.


# ecce865c 02-Nov-2007 fbernon <fbernon>

api.h, api_lib.c, api_msg.c, sockets.c, opt.h: add SO_RCVBUF option for UDP & RAW netconn. You need to set LWIP_SO_RCVBUF=1 in your lwipopts.h (it's disabled by default). Netconn API users can use the netconn_recv_bufsize macro to access it. This is a first release which have to be improve for TCP. Note it used the netconn::recv_avail which need to be more "thread-safe" (note there is already the problem for FIONREAD with lwip_ioctl/ioctlsocket).


# cbe9b050 01-Nov-2007 fbernon <fbernon>

sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, tcp.h, tcp_out.c: Integrate "patch #6250 : MSG_MORE flag for send". MSG_MORE is used at socket api layer, NETCONN_MORE at netconn api layer, and TCP_WRITE_FLAG_MORE at raw api layer. This option enable to delayed TCP PUSH flag on multiple "write" calls. Note that previous "copy" parameter for "write" APIs is now called "apiflags".


# 7077d51f 23-Oct-2007 fbernon <fbernon>

api.h, api_lib.c, api_msg.c: Add macro API_EVENT in the same spirit than TCP_EVENT_xxx macros to get a code more readable. It could also help to remove some code (like we have talk in "patch #5919 : Create compile switch to remove select code"), but it could be done later.


# 2d3a6481 22-Oct-2007 goldsimon <goldsimon>

Minor coding style fixes, added comment


# e3cd1ac1 07-Sep-2007 fbernon <fbernon>

Minor changes (but in lot of files): add #if/#endif for options where they could miss. #if LWIP_xxx if always put after #include "lwip/opt.h" (note this one indirectly include cc.h). Move others includes inside #if/#endif block.


# 62b4741b 03-Sep-2007 fbernon <fbernon>

Changes for "#20503 IGMP Improvement". Initialize igmp_mac_filter to NULL in netif_add (this field should be set in the netif's "init" function). Use the "imr_interface" field (for socket layer) and/or the "interface" field (for netconn layer), for join/leave operations. The igmp_join/leavegroup first parameter change from a netif to an ipaddr. This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany).


# 54c1025e 27-Aug-2007 fbernon <fbernon>

First fix for "bug #20900 : Potential crash error problem with netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state and remove obsolete ones (NETCONN_RECV & NETCONN_ACCEPT).


# 180e6d2c 26-Aug-2007 marcbou <marcbou>

Reset the callbacks and arg (conn) to NULL in do_close_internal(), because
TCP callbacks in api_msg.c can under certain circumstances be called with an
invalid conn pointer after the connection has been closed (and conn has been
freed).


# 2be12287 16-Aug-2007 fbernon <fbernon>

Minor changes (tabs, ident, coding style...)


# d64b3f21 16-Aug-2007 marcbou <marcbou>

Initialize newconn->state to NETCONN_NONE in accept_function;
otherwise it was left to NETCONN_CLOSE and sent_tcp() could prematurely
close the connection.


# 9152d667 09-Aug-2007 fbernon <fbernon>

Comments Fix for Doxygen documentation


# b8b04271 29-Jul-2007 fbernon <fbernon>

Minor fix (warning, linker helper) signaled by Bill Florac


# f4036e83 25-Jul-2007 goldsimon <goldsimon>

Another fix for bug #20021: by not returning an error if tcp_output fails in tcp_close, the code in do_close_internal gets simpler (tcp_output is called again later from tcp timers).


# a1d8335a 24-Jul-2007 fbernon <fbernon>

Fix do_delconn when used with LWIP_TCPIP_CORE_LOCKING=1 on "non-TCP" connections...


# 62c3de30 24-Jul-2007 goldsimon <goldsimon>

Fix bug #20480: Check the pcb passed to tcp_listen() for the correct state (must be CLOSED).


# 6a452951 13-Jul-2007 fbernon <fbernon>

api_msg.c: Fix bug #20318: api_msg "recv" callbacks don't call pbuf_free in all error cases.


# a891854e 13-Jul-2007 fbernon <fbernon>

Fix bug #20315: possible memory leak problem if tcp_listen failed, because current code doesn't follow rawapi.txt documentation.


# 2a77b9fc 03-Jul-2007 goldsimon <goldsimon>

Bug in last version (fix to close problems): netconn thread might get active before calling its callback, so conn was already deallocated.


# 9a4a5b18 03-Jul-2007 goldsimon <goldsimon>

Final fix for bug #20021 and some other problems when closing tcp netconns: removed conn->sem, less context switches when closing, both netconn_close and netconn_delete should safely close tcp connections.


# bb9e9e54 22-Jun-2007 goldsimon <goldsimon>

Changed the expression of LWIP_ERROR to the same as for LWIP_ASSERT


# f49fc35f 21-Jun-2007 goldsimon <goldsimon>

Converted the length argument of netconn_write (and therefore also api_msg_msg.msg.w.len) from u16_t into int to be able to send a bigger buffer than 64K with one time (mainly used from lwip_send).


# 67795ad2 21-Jun-2007 goldsimon <goldsimon>

Corrected do_write for LWIP_TCPIP_CORE_LOCKING=1


# 2aef8bad 21-Jun-2007 goldsimon <goldsimon>

Moved the nagle algorithm from netconn_write/do_write into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too.


# 9f05cabf 21-Jun-2007 goldsimon <goldsimon>

Fixed bug #20021: Moved sendbuf-processing in netconn_write from api_lib.c to api_msg.c to also prevent multiple context-changes on low memory or empty send-buffer.


# 261e92c5 17-Jun-2007 goldsimon <goldsimon>

In accept_function, one LWIP_ERROR had a wrong expression (since it is inverted compared to LWIP_ASSERT...)


# 060cbe15 16-Jun-2007 goldsimon <goldsimon>

Done some work on task #1549 (function documentation), added some LWIP_ERROR checks, don't call pcb_new() from do_bind() and do_connect() since a netconn without pcb can't exist any more (after the recent changes to netconn_new_*())


# 15e82084 13-Jun-2007 goldsimon <goldsimon>

pcb_new sets conn->err if protocol is not implemented -> netconn_new_..() does not allocate a new connection for unsupported protocols.


# d81841f5 10-Jun-2007 fbernon <fbernon>

Minor fix (coding style)


# 95f4c023 09-Jun-2007 goldsimon <goldsimon>

Included switch LWIP_UDPLITE (enabled by default) to switch off UDP-Lite support if not needed (reduces udp.c code size)


# 090aaefb 08-Jun-2007 fbernon <fbernon>

Add LWIP_TCPIP_CORE_LOCKING option (0 as default value) to experiment "locking" as feature to communicate with tcpip_thread for sequential API (netconn & socket layers). Add a alternative code for lwip_sendto to how the code can be optimized with such feature....


# 953d783a 23-May-2007 fbernon <fbernon>

api.h, api_lib.c, api_msg.c, sockets.c: group the different NETCONN_UDPxxx code in only one part...


# 499f4689 22-May-2007 fbernon <fbernon>

api.h, api_lib.c, api_msg.h, api_msg.c: change the struct api_msg_msg to see which parameters are used by which do_xxx function, and to avoid "misusing" parameters (patch #5938).


# 2106f491 22-May-2007 fbernon <fbernon>

Minors fix (spaces, comments, unused variable)


# 81ac03a2 22-May-2007 goldsimon <goldsimon>

Included patch #5938: changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto is only 8 bits wide. This affects the api, as there, the protocol was u16_t, too.


# 613644bf 21-May-2007 goldsimon <goldsimon>

Re-included unneeded cases in do_disconnect() and do_send() to prevent warnings.


# 7f5d6bc9 19-May-2007 fbernon <fbernon>

api_msg.c: Fix some errors forwarding (https://savannah.nongnu.org/task/?6880)


# d5e37309 19-May-2007 fbernon <fbernon>

Minor Fix (unsed code, spaces, idents..)


# 8fa3b680 18-May-2007 goldsimon <goldsimon>

Added #if !NO_SYS to most of the api files since they only work with a sys layer (makes it easier for port projects).


# 2740a811 16-May-2007 goldsimon <goldsimon>

If a udp_pcb has a local_ip set, check if it is the same as the one of the netif used for sending to prevent sending from old addresses after a netif address gets changed (partly fixes bug #3168).


# 9cf1390d 11-May-2007 fbernon <fbernon>

sockets.c, api_lib.c, api_msg.h, api_msg.c, netifapi.h, netifapi.c, tcpip.c: Include a function pointer instead of a table index in the message to reduce footprint. Disable some part of lwip_send and lwip_sendto if some options are not set (LWIP_TCP, LWIP_UDP, LWIP_RAW).


# 5a12aeb4 04-May-2007 fbernon <fbernon>

sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fix bug #19162 "lwip_sento: a possible to corrupt remote addr/port connection state". Reduce problems "not enought memory" with netbuf (if we receive lot of datagrams). Improve lwip_sendto (only one exchange between sockets api and api_msg which run in tcpip_thread context). Add netconn_sento function. WARNING, if you directly access to "fromaddr" & "fromport" field from netbuf struct, these fields are now renamed "addr" & "port".


# 787eecbf 05-Apr-2007 fbernon <fbernon>

Fix mistakes in netconn's error field checking.


# 5f1aac14 05-Apr-2007 fbernon <fbernon>

api_msg.c: Fix bug #16830: "err_tcp() posts to connection mailbox when no pend on the mailbox is active". Now, the post is only done during a connect, and do_send, do_write and do_join_leave_group don't do anything if a previous error was signaled.


# f6bdd2ca 04-Apr-2007 goldsimon <goldsimon>

Introduced #define LWIP_UNUSED_ARG(x) use this for and architecture-independent form to tell the compiler you intentionally are not using this variable. Can be overriden in cc.h.


# f1412f5e 30-Mar-2007 fbernon <fbernon>

api_msg.c: add a "pcb_new" helper function to avoid redundant code, and to add missing pcb allocations checking (in do_bind, and for each raw_new). Fix style.


# 9ec08fa7 28-Mar-2007 fbernon <fbernon>

Missing recv_timeout initialize in accept_function. Minor style fix (indent, mbox checking...)


# 544e469e 22-Mar-2007 fbernon <fbernon>

api_msg.h, api_msg.c: Remove obsolete API_MSG_ACCEPT and do_accept (never used).


# 3eb38d76 21-Mar-2007 fbernon <fbernon>

api_lib.c, api_msg.c, tcpip.c: integrate sys_mbox_fetch(conn->mbox, NULL) calls from api_lib.c to tcpip.c's tcpip_apimsg(). Now, use a local variable and not a dynamic one from memp to send tcpip_msg to tcpip_thread in a synchrone call. Free tcpip_msg from tcpip_apimsg is not done in tcpip_thread. This give a faster and more reliable communication between api_lib and tcpip.


# bb34d8cf 21-Mar-2007 fbernon <fbernon>

api_msg.c, igmp.c, igmp.h: Fix C++ style comments


# b035a619 19-Mar-2007 fbernon <fbernon>

Add return types to tcpip_apimsg() and api_msg_post() to check ERR_MEM problems (api_lib.c can be change now).


# a24a170b 11-Mar-2007 fbernon <fbernon>

New configuration option LWIP_IGMP to enable IGMP processing. Based on only one filter per all network interfaces. Declare a new function in netif to enable to control the MAC filter (to reduce lwIP traffic processing).

Mace Gael for the upper layers, Steve Reynolds for lower ones...


# 1ffd0498 04-Mar-2007 fbernon <fbernon>

api_msg.c: Remove some compiler warnings : parameter "pcb" was never referenced.


# 729da3c8 10-Oct-2006 christiaans <christiaans>

Fixed Nagle algorithm as reported by Bob Grice.


# a82e02ef 07-Aug-2006 christiaans <christiaans>

Partial fix for bug #15926, flushing TCP output in do_close().


# 63140ca7 27-Jun-2006 christiaans <christiaans>

Applied patch for cold case bug #11135.


# 1f016340 14-Jun-2006 christiaans <christiaans>

Applied patch #5146 to handle allocation failures in accept() by Kevin Lawson.


# 6f066fca 21-Jul-2004 softins <softins>

Changed recv_raw() from int to u8_t, to match prototype of raw_recv() in raw.h
and so avoid compiler error.


# e1c4bfad 06-Feb-2004 likewise <likewise>

Merged from DEVEL, except for the API change in etharp.c.


# e4a6d199 14-Nov-2003 likewise <likewise>

Merged from DEVEL into main tree.


# 351e590e 27-Jun-2003 marcbou <marcbou>

Merged from DEVEL.


# 80145519 10-Jun-2003 kieranm <kieranm>

Changed DEBUGF to LWIP_DEBUGF


# df99ce9d 09-Jun-2003 likewise <likewise>

Replaced all tabs with two spaces (regardless of indentation is correct).


# 03bc7c86 01-May-2003 likewise <likewise>

Major stylo search/replace for "One space between keyword and opening bracket."


# 01a53d95 31-Mar-2003 kieranm <kieranm>

Fixed bug in do_delcon (set tcp_arg to NULL)


# 859f06a9 21-Mar-2003 jani <jani>

if LWIP_TCP is 0 do not link in TCP code.putting ugly ifdefs in api and core :(.Also only udp_init if LWIP_UDP is on


# 18df3961 21-Feb-2003 jani <jani>

byte-order handling functions are in inet.c now and the uperrcase counterparts are gone. opt.h has all the
configurable items debug does not need to be directly included.


# 7b3e158c 11-Feb-2003 davidhaas <davidhaas>

sys_thread_new() now returns the thread (request from Marc Boucher).

Removed some unused .h files in coldfire port.

Support LWIP_DIAG and LWIP_ASSERT in coldfire (sort of).

Fix to last api fix to make sure select() is triggered, even when there has
been a FIN.

Allow build of unixsim from cygwin by specifying "make ARCH=cygwin" or from
linux by specifying "make ARCH=linux".


# 848dea20 11-Feb-2003 jani <jani>

Only access non-NULL pbufs on some paths where they can be NULL in newly introduced callback code


# dd2fa15e 06-Feb-2003 davidhaas <davidhaas>

Add the following features and bugfixes:

Added select() functionality to sockets library.
Support for errno in sockets library.
Byte ordering fixes.
basic lwip_ioctl(), FIONREAD, get/setsockopt() etc. support

- added additional argument to netif_add to pass state pointer so that the
if_init function has access to context information before
the interface is added, without accessing globals.

- added netif_remove()

- to conserve cpu load the tcpip_tcp_timer should only be active
when tcbs that need it exist.

- pass length of available data to callbacks for NETCONN_EVT_RCV events

- added tcpip_link_input(), a hack to allow processing of PPP
packets in tcpip_thread() context. This saves threads and context
switches.

- renamed incompatible ASSERT() macro to LWIP_ASSERT() to avoid name
collision.

- changed a bunch of %d's to %u's in format strings for unsigned values.

- added ip_frag to lwip_stats.

- changed IP_REASS_MAXAGE and IP_REASS_TMO defaults to more realistic
values.

- added sys_timeout_remove() function to cancel timeouts (needed by PPP
amongst other things).

- tolerate NULL returns from sys_arch_timeouts() since some threads might
not need to use or have timeouts.

- added sys_sem_wait_timeout()

- moved mem_malloc() function to end of mem.c to work around tasking
compiler bug.

- automatically bind to local tcp port if 0.

- allow customization of port ranges for automatic local bindings.

- corrected various typos, spelling errors, etc..

Thanks to Marc Boucher for many of these changes.


# 6d0a8a85 24-Jan-2003 jani <jani>

Fix locking for disconnect operation (use post and fetch on the connection's mbox in the two threads like other operations).Make netconn_peer take a pointer to addr instead of pointer to pointer to addr.Addr is a 4 byte struct an IP address so use structure assignment not just pointer assignment when saving the peer.This way the address is really saved :fixes bug #1897


# 46c575c0 22-Jan-2003 jani <jani>

Fix udp_bind to allow rebind for same socket (yesterday's commit broke that) and introduce connection info for UDP pcbs.New function netconn_disconnect, do_disconnect for deatching UDP from a remote addres.Fix #2240


# 16434f0d 21-Jan-2003 jani <jani>

Don't allow multiple binds to the same UDP port/address pair.Closes bug #1896


# cc4df710 08-Jan-2003 likewise <likewise>

Updated lwIP module copyright years to include 2003. Committers must check theirs.


# f975754a 13-Nov-2002 kieranm <kieranm>

Initialize err in do_close to prevent compiler warning.


# f06e9550 18-Oct-2002 likewise <likewise>

Initial revision