diff --git a/doc/CHANGES-staging/func_curl.txt b/doc/CHANGES-staging/func_curl.txt new file mode 100644 index 0000000000..fa9ad97462 --- /dev/null +++ b/doc/CHANGES-staging/func_curl.txt @@ -0,0 +1,5 @@ +Subject: func_curl + +A new option, followlocation, can now be enabled with the CURLOPT() +dialplan function. Setting this will instruct cURL to follow 3xx +redirects, which it does not by default. diff --git a/funcs/func_curl.c b/funcs/func_curl.c index af54f7d0fc..fcc626a3a6 100644 --- a/funcs/func_curl.c +++ b/funcs/func_curl.c @@ -110,6 +110,9 @@ Number of seconds to wait for DNS to be resolved + + Whether or not to follow HTTP 3xx redirects (boolean) + For FTP URIs, force a text transfer (boolean) @@ -131,7 +134,9 @@ server response - Maximum number of redirects to follow + Maximum number of redirects to follow. The default is -1, + which allows for unlimited redirects. This only makes sense when + followlocation is also set. Hostname or IP address to use as a proxy server @@ -269,6 +274,9 @@ static int parse_curlopt_key(const char *name, CURLoption *key, enum optiontype } else if (!strcasecmp(name, "proxyuserpwd")) { *key = CURLOPT_PROXYUSERPWD; *ot = OT_STRING; + } else if (!strcasecmp(name, "followlocation")) { + *key = CURLOPT_FOLLOWLOCATION; + *ot = OT_BOOLEAN; } else if (!strcasecmp(name, "maxredirs")) { *key = CURLOPT_MAXREDIRS; *ot = OT_INTEGER; @@ -858,6 +866,7 @@ static struct ast_custom_function acf_curlopt = { " cookie - Send cookie with request [none]\n" " conntimeout - Number of seconds to wait for connection\n" " dnstimeout - Number of seconds to wait for DNS response\n" +" followlocation - Follow HTTP 3xx redirects (boolean)\n" " ftptext - For FTP, force a text transfer (boolean)\n" " ftptimeout - For FTP, the server response timeout\n" " header - Retrieve header information (boolean)\n"