Mercurial > gftp.yaz
diff lib/rfc959.c @ 426:c5d14dca70c3
2004-3-16 Brian Masney <masneyb@gftp.org>
* lib/ftpcommon.h lib/gftp.h lib/rfc959.c src/uicommon/gftpui.c -
fixes so that FXP transfers work again
author | masneyb |
---|---|
date | Tue, 16 Mar 2004 14:50:10 +0000 |
parents | 38bfc112ab46 |
children | d7ff8d2d43aa |
line wrap: on
line diff
--- a/lib/rfc959.c Tue Mar 16 12:23:54 2004 +0000 +++ b/lib/rfc959.c Tue Mar 16 14:50:10 2004 +0000 @@ -1107,7 +1107,6 @@ else tempstr++; - parms->sent_retr = 1; return (gftp_parse_file_size (tempstr) + startsize); } @@ -1117,9 +1116,9 @@ off_t startsize, off_t totalsize) { char *command, *tempstr, resp; - int ret; intptr_t passive_transfer; rfc959_parms * parms; + int ret; g_return_val_if_fail (request != NULL, GFTP_EFATAL); g_return_val_if_fail (filename != NULL, GFTP_EFATAL); @@ -1181,6 +1180,7 @@ const char *tofile, off_t tosize) { char *tempstr, *pos, *endpos; + rfc959_parms * parms; int ret; g_return_val_if_fail (fromreq != NULL, GFTP_EFATAL); @@ -1190,9 +1190,6 @@ g_return_val_if_fail (fromreq->datafd > 0, GFTP_EFATAL); g_return_val_if_fail (toreq->datafd > 0, GFTP_EFATAL); - gftp_set_request_option (fromreq, "passive_transfer", GINT_TO_POINTER(1)); - gftp_set_request_option (toreq, "passive_transfer", GINT_TO_POINTER(0)); - if ((ret = rfc959_send_command (fromreq, "PASV\r\n", 1)) != '2') return (ret); @@ -1238,6 +1235,12 @@ if ((ret = rfc959_read_response (toreq, 1)) < 0) return (ret); + parms = fromreq->protocol_data; + parms->is_fxp_transfer = 1; + + parms = toreq->protocol_data; + parms->is_fxp_transfer = 1; + return (0); } @@ -1252,7 +1255,7 @@ g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL); parms = request->protocol_data; - parms->sent_retr = 0; + parms->is_fxp_transfer = 0; if (parms->data_connection > 0) { @@ -1351,6 +1354,8 @@ int i, j; parms = request->protocol_data; + if (parms->is_fxp_transfer) + return (GFTP_ENOTRANS); num_read = parms->data_conn_read (request, buf, size, parms->data_connection); if (num_read < 0) @@ -1386,6 +1391,9 @@ parms = request->protocol_data; + if (parms->is_fxp_transfer) + return (GFTP_ENOTRANS); + if (parms->is_ascii_transfer) { rsize = 0;