Changes in protocols/http_client.c [1b5ab36:ba9edaa]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/http_client.c
r1b5ab36 rba9edaa 32 32 33 33 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 );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 ); 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 104 73 /* This one is actually pretty simple... Might get more calls if we can't write 105 74 the whole request at once. */ 106 static void http_connected( gpointer data, int source, GaimInputCondition cond )75 static gboolean http_connected( gpointer data, int source, b_input_condition cond ) 107 76 { 108 77 struct http_request *req = data; … … 113 82 114 83 if( req->inpa > 0 ) 115 gaim_input_remove( req->inpa );84 b_event_remove( req->inpa ); 116 85 117 86 sock_make_nonblocking( req->fd ); … … 148 117 149 118 if( req->bytes_written < req->request_length ) 150 req->inpa = gaim_input_add( source,151 152 153 else 154 req->inpa = gaim_input_add( source, GAIM_INPUT_READ, http_incoming_data, req );155 156 return ;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; 157 126 158 127 error: … … 162 131 g_free( req ); 163 132 164 return ;133 return FALSE; 165 134 } 166 135 167 static void http_ssl_connected( gpointer data, void *source, GaimInputCondition cond )136 static gboolean http_ssl_connected( gpointer data, void *source, b_input_condition cond ) 168 137 { 169 138 struct http_request *req = data; … … 177 146 } 178 147 179 static void http_incoming_data( gpointer data, int source, GaimInputCondition cond )148 static gboolean http_incoming_data( gpointer data, int source, b_input_condition cond ) 180 149 { 181 150 struct http_request *req = data; … … 186 155 187 156 if( req->inpa > 0 ) 188 gaim_input_remove( req->inpa );157 b_event_remove( req->inpa ); 189 158 190 159 if( req->ssl ) … … 233 202 234 203 /* There will be more! */ 235 req->inpa = gaim_input_add( req->fd,236 237 238 239 return ;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; 240 209 241 210 got_reply: … … 253 222 evil_server = 1; 254 223 } 255 else if( end1 )224 else 256 225 { 257 226 end1 += 2; 258 227 } 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; 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 } 272 238 273 239 if( ( end1 = strchr( req->reply_headers, ' ' ) ) != NULL ) … … 396 362 req->reply_headers = req->reply_body = NULL; 397 363 398 return ;364 return FALSE; 399 365 } 400 366 … … 414 380 g_free( req->reply_headers ); 415 381 g_free( req ); 382 383 return FALSE; 416 384 }
Note: See TracChangeset
for help on using the changeset viewer.