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