Mercurial > gftp.yaz
diff src/gtk/transfer.c @ 297:6d088dfece0b
2003-10-26 Brian Masney <masneyb@gftp.org>
* src/gtk/gftp-gtk.h src/gtk/transfer.c - (create_transfer,
transfer_done) - added more checks whenever a transfer is created and
stopped to make sure we don't log into the same remote host twice. This
is mainly for DnD.
author | masneyb |
---|---|
date | Mon, 27 Oct 2003 01:22:45 +0000 |
parents | 4747f621b79b |
children | 3b9d5797050f |
line wrap: on
line diff
--- a/src/gtk/transfer.c Mon Oct 27 00:54:25 2003 +0000 +++ b/src/gtk/transfer.c Mon Oct 27 01:22:45 2003 +0000 @@ -1220,25 +1220,26 @@ if (tdata->started) { fromreq = tdata->fromwdata != NULL ? ((gftp_window_data *) tdata->fromwdata)->request : NULL; - if (!tdata->fromreq->stopable && tdata->fromwdata && - ((fromreq->datafd < 0 && fromreq->cached) || fromreq->always_connected) && - (tdata->fromreq->datafd > 0 || tdata->fromreq->always_connected) && - compare_request (tdata->fromreq, fromreq, 0)) - { - gftp_swap_socks (((gftp_window_data *) tdata->towdata)->request, - tdata->toreq); + + if (GFTP_IS_SAME_HOST_STOP_TRANS ((gftp_window_data *) tdata->fromwdata, + tdata->fromreq)) + { gftp_swap_socks (((gftp_window_data *) tdata->fromwdata)->request, tdata->fromreq); - } + refresh (tdata->fromwdata); + } else + gftp_disconnect (tdata->fromreq); + + if (GFTP_IS_SAME_HOST_STOP_TRANS ((gftp_window_data *) tdata->towdata, + tdata->toreq)) { - gftp_disconnect (tdata->fromreq); - gftp_disconnect (tdata->toreq); + gftp_swap_socks (((gftp_window_data *) tdata->towdata)->request, + tdata->toreq); + refresh (tdata->towdata); } - - if (tdata->towdata != NULL && compare_request (tdata->toreq, - ((gftp_window_data *) tdata->towdata)->request, 1)) - refresh (tdata->towdata); + else + gftp_disconnect (tdata->toreq); num_transfers_in_progress--; } @@ -1277,18 +1278,22 @@ if (!tdata->fromreq->stopable) { - if (tdata->fromwdata && - (((gftp_window_data *) tdata->fromwdata)->request->datafd > 0 || - ((gftp_window_data *) tdata->fromwdata)->request->always_connected) && - !((gftp_window_data *) tdata->fromwdata)->request->stopable && - compare_request (tdata->fromreq, ((gftp_window_data *) tdata->fromwdata)->request, 0)) - { + if (GFTP_IS_SAME_HOST_START_TRANS ((gftp_window_data *) tdata->fromwdata, + tdata->fromreq)) + { + gftp_swap_socks (tdata->fromreq, + ((gftp_window_data *) tdata->fromwdata)->request); + update_window (tdata->fromwdata); + } + + if (GFTP_IS_SAME_HOST_START_TRANS ((gftp_window_data *) tdata->towdata, + tdata->toreq)) + { gftp_swap_socks (tdata->toreq, ((gftp_window_data *) tdata->towdata)->request); - gftp_swap_socks (tdata->fromreq, - ((gftp_window_data *) tdata->fromwdata)->request); - update_window_info (); + update_window (tdata->towdata); } + num_transfers_in_progress++; tdata->started = 1; tdata->stalled = 1;