return (retryable_socket_connect_error (errno)
? CONERROR : CONIMPOSSIBLE);
+ if (cmd & LEAVE_PENDING)
+ con->csock = csock;
+ else
+ con->csock = -1;
+
/* Second: Login with proper USER/PASS sequence. */
logprintf (LOG_VERBOSE, _("Logging in as %s ... "), user);
if (opt.server_response)
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPSRVERR:
logputs (LOG_VERBOSE, "\n");
logputs (LOG_NOTQUIET, _("Error in server greeting.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case WRITEFAILED:
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPLOGREFUSED:
logputs (LOG_VERBOSE, "\n");
logputs (LOG_NOTQUIET, _("The server refuses login.\n"));
fd_close (csock);
+ con->csock = -1;
return FTPLOGREFUSED;
break;
case FTPLOGINC:
logputs (LOG_VERBOSE, "\n");
logputs (LOG_NOTQUIET, _("Login incorrect.\n"));
fd_close (csock);
+ con->csock = -1;
return FTPLOGINC;
break;
case FTPOK:
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPSRVERR:
if (!opt.server_response)
logprintf (LOG_VERBOSE, "==> PWD ... ");
- err = ftp_pwd(csock, &con->id);
+ err = ftp_pwd (csock, &con->id);
/* FTPRERR */
switch (err)
{
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPSRVERR :
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case WRITEFAILED:
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPUNKNOWNTYPE:
_("Unknown type `%c', closing control connection.\n"),
type_char);
fd_close (csock);
+ con->csock = -1;
return err;
case FTPOK:
/* Everything is OK. */
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case WRITEFAILED:
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPNSFOD:
logprintf (LOG_NOTQUIET, _("No such directory `%s'.\n\n"),
u->dir);
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPOK:
logprintf (LOG_VERBOSE, "==> SIZE %s ... ", u->file);
}
- err = ftp_size(csock, u->file, len);
+ err = ftp_size (csock, u->file, len);
/* FTPRERR */
switch (err)
{
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPOK:
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case WRITEFAILED:
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
return err;
break;
case FTPNOPASV:
default:
abort ();
break;
- } /* switch(err) */
+ } /* switch (err) */
if (err==FTPOK)
{
DEBUGP (("trying to connect to %s port %d\n",
{
int save_errno = errno;
fd_close (csock);
- logprintf (LOG_VERBOSE, _("couldn't connect to %s port %hu: %s\n"),
+ con->csock = -1;
+ logprintf (LOG_VERBOSE, _("couldn't connect to %s port %d: %s\n"),
pretty_print_address (&passive_addr), passive_port,
strerror (save_errno));
return (retryable_socket_connect_error (save_errno)
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_VERBOSE, "\n");
logprintf (LOG_NOTQUIET, "socket: %s\n", strerror (errno));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_VERBOSE, "\n");
logputs (LOG_NOTQUIET, _("Invalid PORT.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
_("\nREST failed; will not truncate `%s'.\n"),
con->target);
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return CONTNOTSUPPORTED;
if (opt.spider)
{
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return RETRFINISHED;
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET, _("\
Error in server response, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
logputs (LOG_NOTQUIET,
_("Write failed, closing control connection.\n"));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return err;
{
logprintf (LOG_NOTQUIET, "%s: %s\n", con->target, strerror (errno));
fd_close (csock);
+ con->csock = -1;
fd_close (dtsock);
fd_close (local_sock);
return FOPENERR;
logprintf (LOG_NOTQUIET, _("%s: %s, closing control connection.\n"),
con->target, strerror (errno));
fd_close (csock);
+ con->csock = -1;
return FWRITEERR;
}
else if (res == -1)
whole file was retrieved nevertheless (but that is for
ftp_loop_internal to decide). */
fd_close (csock);
+ con->csock = -1;
return FTPRETRINT;
} /* err != FTPOK */
/* If retrieval failed for any reason, return FTPRETRINT, but do not
/* I should probably send 'QUIT' and check for a reply, but this
is faster. #### Is it OK, though? */
fd_close (csock);
+ con->csock = -1;
}
/* If it was a listing, and opt.server_response is true,
print it out. */
if (*s == '/')
return 1;
- if (strstr(s, "../") != 0)
+ if (strstr (s, "../") != 0)
return 1;
return 0;