forked from Archive/PX4-Autopilot
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:
parent
4d73d93489
commit
2fa893134f
|
@ -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)
|
||||||
|
|
14
nuttx/TODO
14
nuttx/TODO
|
@ -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)
|
||||||
^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue