diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http_client.c | 3 | ||||
-rw-r--r-- | lib/http_client.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/http_client.c b/lib/http_client.c index aae5645b..dd5f5563 100644 --- a/lib/http_client.c +++ b/lib/http_client.c @@ -66,6 +66,7 @@ void *http_dorequest( char *host, int port, int ssl, char *request, http_input_f req->data = data; req->request = g_strdup( request ); req->request_length = strlen( request ); + req->redir_ttl = 3; return( req ); } @@ -310,7 +311,7 @@ got_reply: req->status_code = -1; } - if( req->status_code == 301 || req->status_code == 302 ) + if( ( req->status_code == 301 || req->status_code == 302 ) && req->redir_ttl-- > 0 ) { char *loc, *new_request, *new_host; int error = 0, new_port, new_proto; diff --git a/lib/http_client.h b/lib/http_client.h index d73894a4..726c97a6 100644 --- a/lib/http_client.h +++ b/lib/http_client.h @@ -60,6 +60,8 @@ struct http_request int body_size; /* The number of bytes in reply_body. */ int finished; /* Set to non-0 if the request was completed successfully. */ + int redir_ttl; /* You can set it to 0 if you don't want + http_client to follow them. */ http_input_function func; gpointer data; |