summaryrefslogtreecommitdiff
path: root/apps/netutils/ftpc/ftpc_socket.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-03 22:53:36 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-03 22:53:36 +0000
commitad9530eeb839266cc6fa940624dce885f5693a2e (patch)
tree4c9555e7ee46c211847759affee04a7737ce6d4f /apps/netutils/ftpc/ftpc_socket.c
parent92fd8f5221ca528c2def13897c712d558adf1675 (diff)
downloadpx4-nuttx-ad9530eeb839266cc6fa940624dce885f5693a2e.tar.gz
px4-nuttx-ad9530eeb839266cc6fa940624dce885f5693a2e.tar.bz2
px4-nuttx-ad9530eeb839266cc6fa940624dce885f5693a2e.zip
More FTP fixes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3666 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/netutils/ftpc/ftpc_socket.c')
-rw-r--r--apps/netutils/ftpc/ftpc_socket.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/apps/netutils/ftpc/ftpc_socket.c b/apps/netutils/ftpc/ftpc_socket.c
index d70bf1d63..6d917cf36 100644
--- a/apps/netutils/ftpc/ftpc_socket.c
+++ b/apps/netutils/ftpc/ftpc_socket.c
@@ -212,16 +212,20 @@ void ftpc_sockcopy(FAR struct ftpc_socket_s *dest,
*
****************************************************************************/
-int ftpc_sockaccept(struct ftpc_socket_s *sock, const char *mode, bool passive)
+int ftpc_sockaccept(struct ftpc_socket_s *sock, bool passive)
{
struct sockaddr addr;
socklen_t addrlen;
/* Any previous socket should have been uninitialized (0) or explicitly
- * closed (-1).
+ * closed (-1). But the path to this function may include a call to
+ * ftpc_sockinit().
*/
- DEBUGASSERT(sock->sd == 0 || sock->sd == -1);
+ if (sock->sd > 0)
+ {
+ ftpc_sockclose(sock);
+ }
/* In active mode FTP the client connects from a random port (N>1023) to the
* FTP server's command port, port 21. Then, the client starts listening to
@@ -249,6 +253,7 @@ int ftpc_sockaccept(struct ftpc_socket_s *sock, const char *mode, bool passive)
ndbg("accept() failed: %d\n", errno);
return ERROR;
}
+
memcpy(&sock->laddr, &addr, sizeof(sock->laddr));
}
@@ -256,7 +261,7 @@ int ftpc_sockaccept(struct ftpc_socket_s *sock, const char *mode, bool passive)
* the incoming buffered stream.
*/
- sock->instream = fdopen(sock->sd, mode);
+ sock->instream = fdopen(sock->sd, "r");
if (!sock->instream)
{
ndbg("fdopen() failed: %d\n", errno);
@@ -265,7 +270,7 @@ int ftpc_sockaccept(struct ftpc_socket_s *sock, const char *mode, bool passive)
/* Create the outgoing stream */
- sock->outstream = fdopen(sock->sd, mode);
+ sock->outstream = fdopen(sock->sd, "w");
if (!sock->outstream)
{
ndbg("fdopen() failed: %d\n", errno);