diff options
Diffstat (limited to 'lib/http_client.c')
| -rw-r--r-- | lib/http_client.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/lib/http_client.c b/lib/http_client.c index aae5645b..69f06ec5 100644 --- a/lib/http_client.c +++ b/lib/http_client.c @@ -34,9 +34,10 @@  static gboolean http_connected( gpointer data, int source, b_input_condition cond );  static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond );  static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond ); +static void http_free( struct http_request *req ); -void *http_dorequest( char *host, int port, int ssl, char *request, http_input_function func, gpointer data ) +struct http_request *http_dorequest( char *host, int port, int ssl, char *request, http_input_function func, gpointer data )  {  	struct http_request *req;  	int error = 0; @@ -66,11 +67,12 @@ 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 );  } -void *http_dorequest_url( char *url_string, http_input_function func, gpointer data ) +struct http_request *http_dorequest_url( char *url_string, http_input_function func, gpointer data )  {  	url_t *url = g_new0( url_t, 1 );  	char *request; @@ -148,10 +150,10 @@ static gboolean http_connected( gpointer data, int source, b_input_condition con  	if( req->bytes_written < req->request_length )  		req->inpa = b_input_add( source, -		                         req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_WRITE, +		                         req->ssl ? ssl_getdirection( req->ssl ) : B_EV_IO_WRITE,  	        	                 http_connected, req );  	else -		req->inpa = b_input_add( source, GAIM_INPUT_READ, http_incoming_data, req ); +		req->inpa = b_input_add( source, B_EV_IO_READ, http_incoming_data, req );  	return FALSE; @@ -233,7 +235,7 @@ static gboolean http_incoming_data( gpointer data, int source, b_input_condition  	/* There will be more! */  	req->inpa = b_input_add( req->fd, -	                         req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_READ, +	                         req->ssl ? ssl_getdirection( req->ssl ) : B_EV_IO_READ,  	                         http_incoming_data, req );  	return FALSE; @@ -310,7 +312,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; @@ -444,7 +446,7 @@ cleanup:  	return FALSE;  } -void http_free( struct http_request *req ) +static void http_free( struct http_request *req )  {  	g_free( req->request );  	g_free( req->reply_headers ); | 
