Document recvfrom() bug

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4399 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2012-02-16 02:33:01 +00:00
parent 4d73d93489
commit 2fa893134f
2 changed files with 21 additions and 5 deletions

View File

@ -917,10 +917,14 @@ static ssize_t ftpd_recv(int sd, FAR void *data, size_t size, int timeout)
int errval = errno; int errval = errno;
/* Special case some TCP read errors. The client side will break the /* Special case some TCP read errors. The client side will break the
* connection after the file has been sent. The NuttX socket layer * connection after the file has been sent.
* will return an error with errno == ENOTCONN. But perhaps that is */
* wrong, perhaps it should return 0 (end-of-file) in that case? In #warning FIXME
* that event, we will want to report end-of-file here. /* When the client breaks the connection, the NuttX socket layer will
* return an error with errno == ENOTCONN. This is wrong! It should
* return 0 (end-of-file) in that case! We work around the bug and
* report end-of-file for that case here. This needs to be fixed
* someday.
*/ */
if (errval == ENOTCONN) if (errval == ENOTCONN)

View File

@ -13,7 +13,7 @@ nuttx/
(1) pthreads (sched/) (1) pthreads (sched/)
(2) C++ Support (2) C++ Support
(5) Binary loaders (binfmt/) (5) Binary loaders (binfmt/)
(17) Network (net/, drivers/net) (18) Network (net/, drivers/net)
(2) USB (drivers/usbdev, drivers/usbhost) (2) USB (drivers/usbdev, drivers/usbhost)
(8) Libraries (lib/) (8) Libraries (lib/)
(10) File system/Generic drivers (fs/, drivers/) (10) File system/Generic drivers (fs/, drivers/)
@ -437,6 +437,18 @@ o Network (net/, drivers/net)
Status: Open Status: Open
Priority: Low unless you need it. Priority: Low unless you need it.
Title: RECV/RECVFROM RETURN VALUE
Description: If the peer performs an orderly shutdown, then recvfrom currently returns
an error with errno set to ENOTCONN. This is wrong. There is a fine
distinction. The ENOTCONN errno is intended for the case where the socket
was never connected. In the case were the socket was connected then the
peer performs an order shutdown: "...If no messages are available to be
received and the peer has performed an orderly shutdown, recv() shall
return 0. ..."
Status: Open and there is a kludge in apps/netutils/ftpd/ftpdc.c work around this
bad return value.
Priority: Medium
o USB (drivers/usbdev, drivers/usbhost) o USB (drivers/usbdev, drivers/usbhost)
^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^