Loading CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ Changelog Daniel (19 October 2004) - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers with both source and destination being the same host. It can be useful if you want to move a file on a server or similar. - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure out how many new connects a previous transfer required. Loading lib/transfer.c +11 −0 Original line number Diff line number Diff line Loading @@ -2189,6 +2189,7 @@ CURLcode Curl_pretransfersec(struct connectdata *conn) CURLcode status = CURLE_OK; struct SessionHandle *data = conn->data; struct connectdata *sec_conn = NULL; /* secondary connection */ bool reuse_fresh_tmp = data->set.reuse_fresh; /* update data with source host options */ char *url = aprintf( "%s://%s/", conn->protostr, data->set.source_host); Loading @@ -2204,12 +2205,22 @@ CURLcode Curl_pretransfersec(struct connectdata *conn) data->set.ftpport = data->set.source_port; data->set.userpwd = data->set.source_userpwd; /* if both remote hosts are the same host - create new connection */ if (strequal(conn->host.dispname, data->set.source_host)) /* NOTE: this is restored back to the original value after the connect is done */ data->set.reuse_fresh = TRUE; /* secondary connection */ status = Curl_connect_host(data, &sec_conn); if(CURLE_OK == status) { sec_conn->sec_conn = NULL; /* important if re-using existing connection to prevent loop */ sec_conn->data = data; conn->sec_conn = sec_conn; } data->set.reuse_fresh = reuse_fresh_tmp; return status; } Loading
CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ Changelog Daniel (19 October 2004) - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers with both source and destination being the same host. It can be useful if you want to move a file on a server or similar. - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure out how many new connects a previous transfer required. Loading
lib/transfer.c +11 −0 Original line number Diff line number Diff line Loading @@ -2189,6 +2189,7 @@ CURLcode Curl_pretransfersec(struct connectdata *conn) CURLcode status = CURLE_OK; struct SessionHandle *data = conn->data; struct connectdata *sec_conn = NULL; /* secondary connection */ bool reuse_fresh_tmp = data->set.reuse_fresh; /* update data with source host options */ char *url = aprintf( "%s://%s/", conn->protostr, data->set.source_host); Loading @@ -2204,12 +2205,22 @@ CURLcode Curl_pretransfersec(struct connectdata *conn) data->set.ftpport = data->set.source_port; data->set.userpwd = data->set.source_userpwd; /* if both remote hosts are the same host - create new connection */ if (strequal(conn->host.dispname, data->set.source_host)) /* NOTE: this is restored back to the original value after the connect is done */ data->set.reuse_fresh = TRUE; /* secondary connection */ status = Curl_connect_host(data, &sec_conn); if(CURLE_OK == status) { sec_conn->sec_conn = NULL; /* important if re-using existing connection to prevent loop */ sec_conn->data = data; conn->sec_conn = sec_conn; } data->set.reuse_fresh = reuse_fresh_tmp; return status; }