if((res == CURLE_OK) && data->newurl) {
/* Location: redirect
-
+
This is assumed to happen for HTTP(S) only!
- */
+ */
char prot[16];
char path[URL_MAX_LENGTH];
+ if (data->maxredirs && (data->followlocation >= data->maxredirs)) {
+ failf(data,"Maximum (%d) redirects followed", data->maxredirs);
+ curl_disconnect(c_connect);
+ res=CURLE_TOO_MANY_REDIRECTS;
+ break;
+ }
/* mark the next request as a followed location: */
data->bits.this_is_a_follow = TRUE;
case CURLOPT_TIMEOUT:
data->timeout = va_arg(param, long);
break;
+ case CURLOPT_MAXREDIRS:
+ data->maxredirs = va_arg(param, long);
+ break;
case CURLOPT_USERAGENT:
data->useragent = va_arg(param, char *);
break;
/* stuff related to HTTP */
long followlocation;
+ long maxredirs; /* maximum no. of http(s) redirects to follow */
char *referer;
bool free_referer; /* set TRUE if 'referer' points to a string we
allocated */