diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-02-18 18:13:30 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-02-18 18:13:30 +0000 |
commit | f04310d55941bf5e4db3a71a5d3eaca6a6f89616 (patch) | |
tree | ca4c58d32d12949e8d08cb69a652b5e3f7fd0e58 /apps/netutils | |
parent | f60d578a461ee991f5eb42f9ae0dd2e7def75f75 (diff) | |
download | px4-firmware-f04310d55941bf5e4db3a71a5d3eaca6a6f89616.tar.gz px4-firmware-f04310d55941bf5e4db3a71a5d3eaca6a6f89616.tar.bz2 px4-firmware-f04310d55941bf5e4db3a71a5d3eaca6a6f89616.zip |
Correct and error in recv() and recvfrom() return value
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4402 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'apps/netutils')
-rw-r--r-- | apps/netutils/dhcpc/dhcpc.c | 4 | ||||
-rw-r--r-- | apps/netutils/dhcpd/dhcpd.c | 2 | ||||
-rwxr-xr-x | apps/netutils/ftpd/ftpd.c | 48 | ||||
-rw-r--r-- | apps/netutils/resolv/resolv.c | 4 | ||||
-rw-r--r-- | apps/netutils/tftpc/tftpc_get.c | 2 | ||||
-rw-r--r-- | apps/netutils/tftpc/tftpc_packets.c | 4 | ||||
-rw-r--r-- | apps/netutils/tftpc/tftpc_put.c | 12 | ||||
-rw-r--r-- | apps/netutils/webclient/webclient.c | 5 | ||||
-rw-r--r-- | apps/netutils/webserver/httpd.c | 9 |
9 files changed, 51 insertions, 39 deletions
diff --git a/apps/netutils/dhcpc/dhcpc.c b/apps/netutils/dhcpc/dhcpc.c index b5551c6f1..4e59d2371 100644 --- a/apps/netutils/dhcpc/dhcpc.c +++ b/apps/netutils/dhcpc/dhcpc.c @@ -1,8 +1,8 @@ /**************************************************************************** * netutils/dhcpc/dhcpc.c * - * Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * Copyright (C) 2007, 2009, 2011-2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> * * Based heavily on portions of uIP: * diff --git a/apps/netutils/dhcpd/dhcpd.c b/apps/netutils/dhcpd/dhcpd.c index 66bf76f81..6c14c6196 100644 --- a/apps/netutils/dhcpd/dhcpd.c +++ b/apps/netutils/dhcpd/dhcpd.c @@ -1,7 +1,7 @@ /**************************************************************************** * netutils/dhcpd/dhcpd.c * - * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * Redistribution and use in source and binary forms, with or without diff --git a/apps/netutils/ftpd/ftpd.c b/apps/netutils/ftpd/ftpd.c index f6ddf64b8..3db7b1603 100755 --- a/apps/netutils/ftpd/ftpd.c +++ b/apps/netutils/ftpd/ftpd.c @@ -796,7 +796,7 @@ static int ftpd_rxpoll(int sd, int timeout) if (ret == 0) { - nvdbg("poll() timed out\n"); + //nvdbg("poll() timed out\n"); return -ETIMEDOUT; } else if (ret < 0) @@ -870,7 +870,14 @@ static int ftpd_accept(int sd, FAR void *addr, FAR socklen_t *addrlen, ret = ftpd_rxpoll(sd, timeout); if (ret < 0) { - nvdbg("ftpd_rxpoll() failed: %d\n", ret); + /* Only report interesting, infrequent errors (not the common timeout) */ + +#ifdef CONFIG_DEBUG_NET + if (ret != -ETIMEDOUT) + { + ndbg("ftpd_rxpoll() failed: %d\n", ret); + } +#endif return ret; } } @@ -909,34 +916,18 @@ static ssize_t ftpd_recv(int sd, FAR void *data, size_t size, int timeout) } } - /* Receive the data... waiting if necessary */ + /* Receive the data... waiting if necessary. The client side will break the + * connection after the file has been sent. Zero (end-of-file) should be + * received in this case. + */ ret = recv(sd, data, size, 0); if (ret < 0) { int errval = errno; - /* Special case some TCP read errors. The client side will break the - * connection after the file has been sent. - */ -#warning FIXME - /* 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) - { - nvdbg("Connection lost, returning end-of-file\n"); - ret = 0; - } - else - { - ndbg("recv() failed: %d\n", errval); - return -errval; - } + ndbg("recv() failed: %d\n", errval); + return -errval; } return ret; @@ -4342,7 +4333,14 @@ int ftpd_session(FTPD_SESSION handle, int timeout) &session->cmd.addrlen, timeout); if (session->cmd.sd < 0) { - ndbg("ftpd_accept() failed: %d\n", session->cmd.sd); + /* Only report interesting, infrequent errors (not the common timeout) */ + +#ifdef CONFIG_DEBUG_NET + if (session->cmd.sd != -ETIMEDOUT) + { + ndbg("ftpd_accept() failed: %d\n", session->cmd.sd); + } +#endif ret = session->cmd.sd; goto errout_with_session; } diff --git a/apps/netutils/resolv/resolv.c b/apps/netutils/resolv/resolv.c index db9e00085..98d1b28e8 100644 --- a/apps/netutils/resolv/resolv.c +++ b/apps/netutils/resolv/resolv.c @@ -12,8 +12,8 @@ * the resolver code calls a callback function called resolv_found() * that must be implemented by the module that uses the resolver. * - * Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * Copyright (C) 2007, 2009, 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> * * Based heavily on portions of uIP: * diff --git a/apps/netutils/tftpc/tftpc_get.c b/apps/netutils/tftpc/tftpc_get.c index bfae1a3b7..b2170ec39 100644 --- a/apps/netutils/tftpc/tftpc_get.c +++ b/apps/netutils/tftpc/tftpc_get.c @@ -234,7 +234,7 @@ int tftpget(const char *remote, const char *local, in_addr_t addr, bool binary) /* Check if anything valid was received */ - if (nbytesrecvd >= 0) + if (nbytesrecvd > 0) { /* Verify the sender address and port number */ diff --git a/apps/netutils/tftpc/tftpc_packets.c b/apps/netutils/tftpc/tftpc_packets.c index d43410ff4..d1370efd8 100644 --- a/apps/netutils/tftpc/tftpc_packets.c +++ b/apps/netutils/tftpc/tftpc_packets.c @@ -1,8 +1,8 @@ /**************************************************************************** * netuils/tftp/tftpc_packets.c * - * Copyright (C) 2008-2009, 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * Copyright (C) 2008-2009, 2011-2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/apps/netutils/tftpc/tftpc_put.c b/apps/netutils/tftpc/tftpc_put.c index c292244a6..b36599718 100644 --- a/apps/netutils/tftpc/tftpc_put.c +++ b/apps/netutils/tftpc/tftpc_put.c @@ -217,9 +217,17 @@ static int tftp_rcvack(int sd, uint8_t *packet, struct sockaddr_in *server, { /* Failed to receive a good packet */ - if (nbytes >= 0) + if (nbytes == 0) { - ndbg("tftp_recvfrom short packet: %d bytes\n", nbytes); + ndbg("Connection lost: %d bytes\n", nbytes); + } + else if (nbytes > 0) + { + ndbg("Short packet: %d bytes\n", nbytes); + } + else + { + ndbg("Recveid failure\n"); } /* Break out to bump up the retry count */ diff --git a/apps/netutils/webclient/webclient.c b/apps/netutils/webclient/webclient.c index e52f592f5..05a63ba38 100644 --- a/apps/netutils/webclient/webclient.c +++ b/apps/netutils/webclient/webclient.c @@ -2,8 +2,8 @@ * netutils/webclient/webclient.c * Implementation of the HTTP client. * - * Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * Copyright (C) 2007, 2009, 2011-2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> * * Based on uIP which also has a BSD style license: * @@ -526,6 +526,7 @@ int wget(FAR const char *url, FAR char *buffer, int buflen, } else if (ret == 0) { + nvdbg("Connection lost\n"); close(sockfd); break; } diff --git a/apps/netutils/webserver/httpd.c b/apps/netutils/webserver/httpd.c index 9322b58dc..bf03a8094 100644 --- a/apps/netutils/webserver/httpd.c +++ b/apps/netutils/webserver/httpd.c @@ -2,8 +2,8 @@ * netutils/webserver/httpd.c * httpd Web server * - * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> * * This is a leverage of similar logic from uIP: * @@ -380,6 +380,11 @@ static inline int httpd_cmd(struct httpd_state *pstate) ndbg("[%d] recv failed: %d\n", pstate->ht_sockfd, errno); return ERROR; } + lese if (recvlen == 0) + { + ndbg("[%d] connection lost\n", pstate->ht_sockfd); + return ERROR; + } httpd_dumpbuffer("Incoming buffer", pstate->ht_buffer, recvlen); /* We will handle only GET */ |