]> granicus.if.org Git - curl/commitdiff
- Fixed CURLINFO_PRIMARY_IP: When libcurl created a connection to host A then
authorDaniel Stenberg <daniel@haxx.se>
Tue, 7 Oct 2008 21:56:56 +0000 (21:56 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 7 Oct 2008 21:56:56 +0000 (21:56 +0000)
  the app re-used the handle to do a connection to host B and then again
  re-used the handle to host A, it would not update the info with host A's IP
  address (due to the connection being re-used) but it would instead report
  the info from host B.

CHANGES
RELEASE-NOTES
lib/url.c

diff --git a/CHANGES b/CHANGES
index db6b182fccc8d89a68f1dd49aec00c08cda80808..3b15134f109ba9bab650c7a2a150fbd86c733559 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+Daniel Stenberg (7 Oct 2008)
+- Fixed CURLINFO_PRIMARY_IP: When libcurl created a connection to host A then
+  the app re-used the handle to do a connection to host B and then again
+  re-used the handle to host A, it would not update the info with host A's IP
+  address (due to the connection being re-used) but it would instead report
+  the info from host B.
+
 Yang Tse (7 Oct 2008)
 - Added --enable-optimize configure option to enable and disable compiler
   optimizations to allow decoupled setting from --enable-debug.
index 35a68c6508936829e89f97793922bd7c9e9d70fb..6ee07467342939b478ea78d95bb938a1b6b49377 100644 (file)
@@ -32,6 +32,7 @@ This release includes the following bugfixes:
  o CURLINFO_REDIRECT_URL didn't work with the multi interface
  o CURLOPT_RANGE now works for SFTP downloads
  o FTP SIZE response 550 now causes CURLE_REMOTE_FILE_NOT_FOUND
+ o CURLINFO_PRIMARY_IP fixed for persistent connection re-use cases
 
 This release includes the following known bugs:
 
index bb09d2fd33a202287473951b43cc07a0fa2fa095..17b34c68ed8896f0067e5578285d33e8616c742f 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -4238,6 +4238,12 @@ static CURLcode create_conn(struct SessionHandle *data,
     infof(data, "Re-using existing connection! (#%ld) with host %s\n",
           conn->connectindex,
           conn->proxy.name?conn->proxy.dispname:conn->host.dispname);
+    /* copy this IP address to the common buffer for the easy handle so that
+       the address can actually survice the removal of this connection. strcpy
+       is safe since the target buffer is big enough to hold the largest
+       possible IP address */
+    strcpy(data->info.ip, conn->ip_addr_str);
+
   }
   else {
     /*