1--- 2c: Copyright (C) Daniel Stenberg, <daniel.se>, et al. 3SPDX-License-Identifier: curl 4Title: CURLINFO_PROXY_ERROR 5Section: 3 6Source: libcurl 7See-also: 8 - CURLINFO_RESPONSE_CODE (3) 9 - curl_easy_getinfo (3) 10 - curl_easy_setopt (3) 11 - libcurl-errors (3) 12--- 13 14# NAME 15 16CURLINFO_PROXY_ERROR - get the detailed (SOCKS) proxy error 17 18# SYNOPSIS 19 20~~~c 21#include <curl/curl.h> 22 23typedef enum { 24 CURLPX_OK, 25 CURLPX_BAD_ADDRESS_TYPE, 26 CURLPX_BAD_VERSION, 27 CURLPX_CLOSED, 28 CURLPX_GSSAPI, 29 CURLPX_GSSAPI_PERMSG, 30 CURLPX_GSSAPI_PROTECTION, 31 CURLPX_IDENTD, 32 CURLPX_IDENTD_DIFFER, 33 CURLPX_LONG_HOSTNAME, 34 CURLPX_LONG_PASSWD, 35 CURLPX_LONG_USER, 36 CURLPX_NO_AUTH, 37 CURLPX_RECV_ADDRESS, 38 CURLPX_RECV_AUTH, 39 CURLPX_RECV_CONNECT, 40 CURLPX_RECV_REQACK, 41 CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED, 42 CURLPX_REPLY_COMMAND_NOT_SUPPORTED, 43 CURLPX_REPLY_CONNECTION_REFUSED, 44 CURLPX_REPLY_GENERAL_SERVER_FAILURE, 45 CURLPX_REPLY_HOST_UNREACHABLE, 46 CURLPX_REPLY_NETWORK_UNREACHABLE, 47 CURLPX_REPLY_NOT_ALLOWED, 48 CURLPX_REPLY_TTL_EXPIRED, 49 CURLPX_REPLY_UNASSIGNED, 50 CURLPX_REQUEST_FAILED, 51 CURLPX_RESOLVE_HOST, 52 CURLPX_SEND_AUTH, 53 CURLPX_SEND_CONNECT, 54 CURLPX_SEND_REQUEST, 55 CURLPX_UNKNOWN_FAIL, 56 CURLPX_UNKNOWN_MODE, 57 CURLPX_USER_REJECTED, 58 CURLPX_LAST /* never use */ 59} CURLproxycode; 60 61CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_ERROR, long *detail); 62~~~ 63 64# DESCRIPTION 65 66Pass a pointer to a long to receive a detailed error code when the most recent 67transfer returned a **CURLE_PROXY** error. That error code matches the 68**CURLproxycode** set. 69 70The error code is zero (**CURLPX_OK**) if no response code was available. 71 72# PROTOCOLS 73 74All that can be done over SOCKS 75 76# EXAMPLE 77 78~~~c 79int main(void) 80{ 81 CURL *curl = curl_easy_init(); 82 if(curl) { 83 CURLcode res; 84 curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); 85 86 curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://127.0.0.1"); 87 res = curl_easy_perform(curl); 88 if(res == CURLE_PROXY) { 89 long proxycode; 90 res = curl_easy_getinfo(curl, CURLINFO_PROXY_ERROR, &proxycode); 91 if(!res && proxycode) 92 printf("The detailed proxy error: %ld\n", proxycode); 93 } 94 curl_easy_cleanup(curl); 95 } 96} 97~~~ 98 99# AVAILABILITY 100 101Added in 7.73.0 102 103# RETURN VALUE 104 105Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. 106