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;