Changes in / [75cde5d:881fd4e]


Ignore:
Location:
protocols
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • protocols/http_client.c

    r75cde5d r881fd4e  
    6969       
    7070        return( req );
     71}
     72
     73void *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;
    71102}
    72103
     
    222253                evil_server = 1;
    223254        }
    224         else
     255        else if( end1 )
    225256        {
    226257                end1 += 2;
    227258        }
    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;
    238272       
    239273        if( ( end1 = strchr( req->reply_headers, ' ' ) ) != NULL )
  • protocols/http_client.h

    r75cde5d r881fd4e  
    3939        char *reply_headers;
    4040        char *reply_body;
     41        int body_size;
    4142        int finished;
    4243       
     
    5354
    5455void *http_dorequest( char *host, int port, int ssl, char *request, http_input_function func, gpointer data );
     56void *http_dorequest_url( char *url_string, http_input_function func, gpointer data );
Note: See TracChangeset for help on using the changeset viewer.