diff --git a/doc/CHANGES-staging/func_curl.txt b/doc/CHANGES-staging/func_curl.txt new file mode 100644 index 0000000000000000000000000000000000000000..fa9ad97462429f21d87da21b0f420be2a0d08317 --- /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 af54f7d0fc428d33617fd4ff42a6ab49d93015b0..fcc626a3a6d8d73e0fdea3659598e4dd287c6bc2 100644 --- a/funcs/func_curl.c +++ b/funcs/func_curl.c @@ -110,6 +110,9 @@ <enum name="dnstimeout"> <para>Number of seconds to wait for DNS to be resolved</para> </enum> + <enum name="followlocation"> + <para>Whether or not to follow HTTP 3xx redirects (boolean)</para> + </enum> <enum name="ftptext"> <para>For FTP URIs, force a text transfer (boolean)</para> </enum> @@ -131,7 +134,9 @@ server response</para> </enum> <enum name="maxredirs"> - <para>Maximum number of redirects to follow</para> + <para>Maximum number of redirects to follow. The default is -1, + which allows for unlimited redirects. This only makes sense when + followlocation is also set.</para> </enum> <enum name="proxy"> <para>Hostname or IP address to use as a proxy server</para> @@ -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"