Hello, Known bug #76 [1] states that "the SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on that platform), and long is only 32 bits. It makes it impossible for curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET option as for all other operating systems."
Looking at the code (I'm using curl-7.43.0), could we change the code in lib/getinfo.c: 168 case CURLINFO_LASTSOCKET: 169 sockfd = Curl_getconnectinfo(data, NULL); 170 171 /* note: this is not a good conversion for systems with 64 bit sockets and 172 32 bit longs */ 173 if(sockfd != CURL_SOCKET_BAD) 174 *param_longp = (long)sockfd; 175 else 176 /* this interface is documented to return -1 in case of badness, which 177 may not be the same as the CURL_SOCKET_BAD value */ 178 *param_longp = -1; 179 break; to have line 174 say: 174 *(long long *)param_longp = sockfd; line 178 say: 178 *(long long *)param_longp = -1; and simply document that for CURLINFO_LASTSOCKET only, we should pass a long long pointer to curl_easy_getinfo()? If I'm not mistaken, this would make libcurl perfectly usable with a CURLOPT_CONNECT_ONLY scenario, on all platforms. [1] http://curl.haxx.se/docs/knownbugs.html Thanks, Razvan ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.html
