Changes in protocols/http_client.c [ba9edaa:1b5ab36]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/http_client.c
rba9edaa r1b5ab36 32 32 33 33 34 static gboolean http_connected( gpointer data, int source, b_input_condition cond );35 static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond );36 static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond );34 static void http_connected( gpointer data, int source, GaimInputCondition cond ); 35 static void http_ssl_connected( gpointer data, void *source, GaimInputCondition cond ); 36 static void http_incoming_data( gpointer data, int source, GaimInputCondition cond ); 37 37 38 38 … … 71 71 } 72 72 73 void *http_dorequest_url( char *url_string, http_input_function func, gpointer data ) 74 { 75 url_t *url = g_new0( url_t, 1 ); 76 char *request; 77 void *ret; 78 79 if( !url_set( url, url_string ) ) 80 { 81 g_free( url ); 82 return NULL; 83 } 84 85 if( url->proto != PROTO_HTTP && url->proto != PROTO_HTTPS ) 86 { 87 g_free( url ); 88 return NULL; 89 } 90 91 request = g_strdup_printf( "GET %s HTTP/1.0\r\n" 92 "Host: %s\r\n" 93 "User-Agent: BitlBee " BITLBEE_VERSION " " ARCH "/" CPU "\r\n" 94 "\r\n", url->file, url->host ); 95 96 ret = http_dorequest( url->host, url->port, 97 url->proto == PROTO_HTTPS, request, func, data ); 98 99 g_free( url ); 100 g_free( request ); 101 return ret; 102 } 103 73 104 /* This one is actually pretty simple... Might get more calls if we can't write 74 105 the whole request at once. */ 75 static gboolean http_connected( gpointer data, int source, b_input_condition cond )106 static void http_connected( gpointer data, int source, GaimInputCondition cond ) 76 107 { 77 108 struct http_request *req = data; … … 82 113 83 114 if( req->inpa > 0 ) 84 b_event_remove( req->inpa );115 gaim_input_remove( req->inpa ); 85 116 86 117 sock_make_nonblocking( req->fd ); … … 117 148 118 149 if( req->bytes_written < req->request_length ) 119 req->inpa = b_input_add( source,120 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_WRITE,121 http_connected, req );122 else 123 req->inpa = b_input_add( source, GAIM_INPUT_READ, http_incoming_data, req );124 125 return FALSE;150 req->inpa = gaim_input_add( source, 151 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_WRITE, 152 http_connected, req ); 153 else 154 req->inpa = gaim_input_add( source, GAIM_INPUT_READ, http_incoming_data, req ); 155 156 return; 126 157 127 158 error: … … 131 162 g_free( req ); 132 163 133 return FALSE;164 return; 134 165 } 135 166 136 static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond )167 static void http_ssl_connected( gpointer data, void *source, GaimInputCondition cond ) 137 168 { 138 169 struct http_request *req = data; … … 146 177 } 147 178 148 static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond )179 static void http_incoming_data( gpointer data, int source, GaimInputCondition cond ) 149 180 { 150 181 struct http_request *req = data; … … 155 186 156 187 if( req->inpa > 0 ) 157 b_event_remove( req->inpa );188 gaim_input_remove( req->inpa ); 158 189 159 190 if( req->ssl ) … … 202 233 203 234 /* There will be more! */ 204 req->inpa = b_input_add( req->fd,205 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_READ,206 http_incoming_data, req );207 208 return FALSE;235 req->inpa = gaim_input_add( req->fd, 236 req->ssl ? ssl_getdirection( req->ssl ) : GAIM_INPUT_READ, 237 http_incoming_data, req ); 238 239 return; 209 240 210 241 got_reply: … … 222 253 evil_server = 1; 223 254 } 224 else 255 else if( end1 ) 225 256 { 226 257 end1 += 2; 227 258 } 228 229 if( end1 ) 230 { 231 *end1 = 0; 232 233 if( evil_server ) 234 req->reply_body = end1 + 1; 235 else 236 req->reply_body = end1 + 2; 237 } 259 else 260 { 261 goto cleanup; 262 } 263 264 *end1 = 0; 265 266 if( evil_server ) 267 req->reply_body = end1 + 1; 268 else 269 req->reply_body = end1 + 2; 270 271 req->body_size = req->reply_headers + req->bytes_read - req->reply_body; 238 272 239 273 if( ( end1 = strchr( req->reply_headers, ' ' ) ) != NULL ) … … 362 396 req->reply_headers = req->reply_body = NULL; 363 397 364 return FALSE;398 return; 365 399 } 366 400 … … 380 414 g_free( req->reply_headers ); 381 415 g_free( req ); 382 383 return FALSE;384 416 }
Note: See TracChangeset
for help on using the changeset viewer.