diff options
Diffstat (limited to 'ot_http.c')
| -rw-r--r-- | ot_http.c | 140 |
1 files changed, 70 insertions, 70 deletions
| @@ -35,50 +35,50 @@ enum { | |||
| 35 | SUCCESS_HTTP_HEADER_LENGTH_CONTENT_ENCODING = 32, | 35 | SUCCESS_HTTP_HEADER_LENGTH_CONTENT_ENCODING = 32, |
| 36 | SUCCESS_HTTP_SIZE_OFF = 17 }; | 36 | SUCCESS_HTTP_SIZE_OFF = 17 }; |
| 37 | 37 | ||
| 38 | static void http_senddata( const int64 client_socket, struct ot_workstruct *ws ) { | 38 | static void http_senddata( const int64 sock, struct ot_workstruct *ws ) { |
| 39 | struct http_data *h = io_getcookie( client_socket ); | 39 | struct http_data *cookie = io_getcookie( sock ); |
| 40 | ssize_t written_size; | 40 | ssize_t written_size; |
| 41 | 41 | ||
| 42 | /* whoever sends data is not interested in its input-array */ | 42 | /* whoever sends data is not interested in its input-array */ |
| 43 | if( h && ( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) ) { | 43 | if( cookie && ( cookie->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) ) { |
| 44 | h->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED; | 44 | cookie->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED; |
| 45 | array_reset( &h->data.request ); | 45 | array_reset( &cookie->data.request ); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | written_size = write( client_socket, ws->reply, ws->reply_size ); | 48 | written_size = write( sock, ws->reply, ws->reply_size ); |
| 49 | if( ( written_size < 0 ) || ( written_size == ws->reply_size ) ) { | 49 | if( ( written_size < 0 ) || ( written_size == ws->reply_size ) ) { |
| 50 | free( h ); io_close( client_socket ); | 50 | free( cookie ); io_close( sock ); |
| 51 | } else { | 51 | } else { |
| 52 | char * outbuf; | 52 | char * outbuf; |
| 53 | tai6464 t; | 53 | tai6464 t; |
| 54 | 54 | ||
| 55 | if( !h ) return; | 55 | if( !cookie ) return; |
| 56 | if( !( outbuf = malloc( ws->reply_size - written_size ) ) ) { | 56 | if( !( outbuf = malloc( ws->reply_size - written_size ) ) ) { |
| 57 | free(h); io_close( client_socket ); | 57 | free(cookie); io_close( sock ); |
| 58 | return; | 58 | return; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | iob_reset( &h->data.batch ); | 61 | iob_reset( &cookie->data.batch ); |
| 62 | memcpy( outbuf, ws->reply + written_size, ws->reply_size - written_size ); | 62 | memcpy( outbuf, ws->reply + written_size, ws->reply_size - written_size ); |
| 63 | iob_addbuf_free( &h->data.batch, outbuf, ws->reply_size - written_size ); | 63 | iob_addbuf_free( &cookie->data.batch, outbuf, ws->reply_size - written_size ); |
| 64 | h->flag |= STRUCT_HTTP_FLAG_IOB_USED; | 64 | cookie->flag |= STRUCT_HTTP_FLAG_IOB_USED; |
| 65 | 65 | ||
| 66 | /* writeable short data sockets just have a tcp timeout */ | 66 | /* writeable short data sockets just have a tcp timeout */ |
| 67 | taia_uint( &t, 0 ); io_timeout( client_socket, t ); | 67 | taia_uint( &t, 0 ); io_timeout( sock, t ); |
| 68 | io_dontwantread( client_socket ); | 68 | io_dontwantread( sock ); |
| 69 | io_wantwrite( client_socket ); | 69 | io_wantwrite( sock ); |
| 70 | } | 70 | } |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | #define HTTPERROR_302 return http_issue_error( client_socket, ws, CODE_HTTPERROR_302 ) | 73 | #define HTTPERROR_302 return http_issue_error( sock, ws, CODE_HTTPERROR_302 ) |
| 74 | #define HTTPERROR_400 return http_issue_error( client_socket, ws, CODE_HTTPERROR_400 ) | 74 | #define HTTPERROR_400 return http_issue_error( sock, ws, CODE_HTTPERROR_400 ) |
| 75 | #define HTTPERROR_400_PARAM return http_issue_error( client_socket, ws, CODE_HTTPERROR_400_PARAM ) | 75 | #define HTTPERROR_400_PARAM return http_issue_error( sock, ws, CODE_HTTPERROR_400_PARAM ) |
| 76 | #define HTTPERROR_400_COMPACT return http_issue_error( client_socket, ws, CODE_HTTPERROR_400_COMPACT ) | 76 | #define HTTPERROR_400_COMPACT return http_issue_error( sock, ws, CODE_HTTPERROR_400_COMPACT ) |
| 77 | #define HTTPERROR_400_DOUBLEHASH return http_issue_error( client_socket, ws, CODE_HTTPERROR_400_PARAM ) | 77 | #define HTTPERROR_400_DOUBLEHASH return http_issue_error( sock, ws, CODE_HTTPERROR_400_PARAM ) |
| 78 | #define HTTPERROR_403_IP return http_issue_error( client_socket, ws, CODE_HTTPERROR_403_IP ) | 78 | #define HTTPERROR_403_IP return http_issue_error( sock, ws, CODE_HTTPERROR_403_IP ) |
| 79 | #define HTTPERROR_404 return http_issue_error( client_socket, ws, CODE_HTTPERROR_404 ) | 79 | #define HTTPERROR_404 return http_issue_error( sock, ws, CODE_HTTPERROR_404 ) |
| 80 | #define HTTPERROR_500 return http_issue_error( client_socket, ws, CODE_HTTPERROR_500 ) | 80 | #define HTTPERROR_500 return http_issue_error( sock, ws, CODE_HTTPERROR_500 ) |
| 81 | ssize_t http_issue_error( const int64 client_socket, struct ot_workstruct *ws, int code ) { | 81 | ssize_t http_issue_error( const int64 sock, struct ot_workstruct *ws, int code ) { |
| 82 | char *error_code[] = { "302 Found", "400 Invalid Request", "400 Invalid Request", "400 Invalid Request", | 82 | char *error_code[] = { "302 Found", "400 Invalid Request", "400 Invalid Request", "400 Invalid Request", |
| 83 | "403 Access Denied", "404 Not Found", "500 Internal Server Error" }; | 83 | "403 Access Denied", "404 Not Found", "500 Internal Server Error" }; |
| 84 | char *title = error_code[code]; | 84 | char *title = error_code[code]; |
| @@ -93,32 +93,32 @@ ssize_t http_issue_error( const int64 client_socket, struct ot_workstruct *ws, i | |||
| 93 | fprintf( stderr, "DEBUG: invalid request was: %s\n", ws->debugbuf ); | 93 | fprintf( stderr, "DEBUG: invalid request was: %s\n", ws->debugbuf ); |
| 94 | #endif | 94 | #endif |
| 95 | stats_issue_event( EVENT_FAILED, FLAG_TCP, code ); | 95 | stats_issue_event( EVENT_FAILED, FLAG_TCP, code ); |
| 96 | http_senddata( client_socket, ws ); | 96 | http_senddata( sock, ws ); |
| 97 | return ws->reply_size = -2; | 97 | return ws->reply_size = -2; |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | ssize_t http_sendiovecdata( const int64 client_socket, struct ot_workstruct *ws, int iovec_entries, struct iovec *iovector ) { | 100 | ssize_t http_sendiovecdata( const int64 sock, struct ot_workstruct *ws, int iovec_entries, struct iovec *iovector ) { |
| 101 | struct http_data *h = io_getcookie( client_socket ); | 101 | struct http_data *cookie = io_getcookie( sock ); |
| 102 | char *header; | 102 | char *header; |
| 103 | int i; | 103 | int i; |
| 104 | size_t header_size, size = iovec_length( &iovec_entries, &iovector ); | 104 | size_t header_size, size = iovec_length( &iovec_entries, &iovector ); |
| 105 | tai6464 t; | 105 | tai6464 t; |
| 106 | 106 | ||
| 107 | /* No cookie? Bad socket. Leave. */ | 107 | /* No cookie? Bad socket. Leave. */ |
| 108 | if( !h ) { | 108 | if( !cookie ) { |
| 109 | iovec_free( &iovec_entries, &iovector ); | 109 | iovec_free( &iovec_entries, &iovector ); |
| 110 | HTTPERROR_500; | 110 | HTTPERROR_500; |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | /* If this socket collected request in a buffer, | 113 | /* If this socket collected request in a buffer, |
| 114 | free it now */ | 114 | free it now */ |
| 115 | if( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) { | 115 | if( cookie->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) { |
| 116 | h->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED; | 116 | cookie->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED; |
| 117 | array_reset( &h->data.request ); | 117 | array_reset( &cookie->data.request ); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | /* If we came here, wait for the answer is over */ | 120 | /* If we came here, wait for the answer is over */ |
| 121 | h->flag &= ~STRUCT_HTTP_FLAG_WAITINGFORTASK; | 121 | cookie->flag &= ~STRUCT_HTTP_FLAG_WAITINGFORTASK; |
| 122 | 122 | ||
| 123 | /* Our answers never are 0 vectors. Return an error. */ | 123 | /* Our answers never are 0 vectors. Return an error. */ |
| 124 | if( !iovec_entries ) { | 124 | if( !iovec_entries ) { |
| @@ -132,32 +132,32 @@ ssize_t http_sendiovecdata( const int64 client_socket, struct ot_workstruct *ws, | |||
| 132 | HTTPERROR_500; | 132 | HTTPERROR_500; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | if( h->flag & STRUCT_HTTP_FLAG_GZIP ) | 135 | if( cookie->flag & STRUCT_HTTP_FLAG_GZIP ) |
| 136 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Encoding: gzip\r\nContent-Length: %zd\r\n\r\n", size ); | 136 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Encoding: gzip\r\nContent-Length: %zd\r\n\r\n", size ); |
| 137 | else if( h->flag & STRUCT_HTTP_FLAG_BZIP2 ) | 137 | else if( cookie->flag & STRUCT_HTTP_FLAG_BZIP2 ) |
| 138 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Encoding: bzip2\r\nContent-Length: %zd\r\n\r\n", size ); | 138 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Encoding: bzip2\r\nContent-Length: %zd\r\n\r\n", size ); |
| 139 | else | 139 | else |
| 140 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: %zd\r\n\r\n", size ); | 140 | header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: %zd\r\n\r\n", size ); |
| 141 | 141 | ||
| 142 | iob_reset( &h->data.batch ); | 142 | iob_reset( &cookie->data.batch ); |
| 143 | iob_addbuf_free( &h->data.batch, header, header_size ); | 143 | iob_addbuf_free( &cookie->data.batch, header, header_size ); |
| 144 | 144 | ||
| 145 | /* Will move to ot_iovec.c */ | 145 | /* Will move to ot_iovec.c */ |
| 146 | for( i=0; i<iovec_entries; ++i ) | 146 | for( i=0; i<iovec_entries; ++i ) |
| 147 | iob_addbuf_munmap( &h->data.batch, iovector[i].iov_base, iovector[i].iov_len ); | 147 | iob_addbuf_munmap( &cookie->data.batch, iovector[i].iov_base, iovector[i].iov_len ); |
| 148 | free( iovector ); | 148 | free( iovector ); |
| 149 | 149 | ||
| 150 | h->flag |= STRUCT_HTTP_FLAG_IOB_USED; | 150 | cookie->flag |= STRUCT_HTTP_FLAG_IOB_USED; |
| 151 | 151 | ||
| 152 | /* writeable sockets timeout after 10 minutes */ | 152 | /* writeable sockets timeout after 10 minutes */ |
| 153 | taia_now( &t ); taia_addsec( &t, &t, OT_CLIENT_TIMEOUT_SEND ); | 153 | taia_now( &t ); taia_addsec( &t, &t, OT_CLIENT_TIMEOUT_SEND ); |
| 154 | io_timeout( client_socket, t ); | 154 | io_timeout( sock, t ); |
| 155 | io_dontwantread( client_socket ); | 155 | io_dontwantread( sock ); |
| 156 | io_wantwrite( client_socket ); | 156 | io_wantwrite( sock ); |
| 157 | return 0; | 157 | return 0; |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | static ssize_t http_handle_stats( const int64 client_socket, struct ot_workstruct *ws, char *read_ptr ) { | 160 | static ssize_t http_handle_stats( const int64 sock, struct ot_workstruct *ws, char *read_ptr ) { |
| 161 | static const ot_keywords keywords_main[] = | 161 | static const ot_keywords keywords_main[] = |
| 162 | { { "mode", 1 }, {"format", 2 }, { NULL, -3 } }; | 162 | { { "mode", 1 }, {"format", 2 }, { NULL, -3 } }; |
| 163 | static const ot_keywords keywords_mode[] = | 163 | static const ot_keywords keywords_mode[] = |
| @@ -173,9 +173,9 @@ static const ot_keywords keywords_format[] = | |||
| 173 | int mode = TASK_STATS_PEERS, scanon = 1, format = 0; | 173 | int mode = TASK_STATS_PEERS, scanon = 1, format = 0; |
| 174 | 174 | ||
| 175 | #ifdef WANT_RESTRICT_STATS | 175 | #ifdef WANT_RESTRICT_STATS |
| 176 | struct http_data *h = io_getcookie( client_socket ); | 176 | struct http_data *cookie = io_getcookie( sock ); |
| 177 | 177 | ||
| 178 | if( !h || !accesslist_isblessed( h->ip, OT_PERMISSION_MAY_STAT ) ) | 178 | if( !cookie || !accesslist_isblessed( cookie->ip, OT_PERMISSION_MAY_STAT ) ) |
| 179 | HTTPERROR_403_IP; | 179 | HTTPERROR_403_IP; |
| 180 | #endif | 180 | #endif |
| 181 | 181 | ||
| @@ -195,22 +195,22 @@ static const ot_keywords keywords_format[] = | |||
| 195 | 195 | ||
| 196 | #ifdef WANT_FULLSCRAPE | 196 | #ifdef WANT_FULLSCRAPE |
| 197 | if( mode == TASK_STATS_TPB ) { | 197 | if( mode == TASK_STATS_TPB ) { |
| 198 | struct http_data* h = io_getcookie( client_socket ); | 198 | struct http_data* cookie = io_getcookie( sock ); |
| 199 | tai6464 t; | 199 | tai6464 t; |
| 200 | #ifdef WANT_COMPRESSION_GZIP | 200 | #ifdef WANT_COMPRESSION_GZIP |
| 201 | ws->request[ws->request_size] = 0; | 201 | ws->request[ws->request_size] = 0; |
| 202 | if( strstr( read_ptr - 1, "gzip" ) ) { | 202 | if( strstr( read_ptr - 1, "gzip" ) ) { |
| 203 | h->flag |= STRUCT_HTTP_FLAG_GZIP; | 203 | cookie->flag |= STRUCT_HTTP_FLAG_GZIP; |
| 204 | format |= TASK_FLAG_GZIP; | 204 | format |= TASK_FLAG_GZIP; |
| 205 | } | 205 | } |
| 206 | #endif | 206 | #endif |
| 207 | /* Pass this task to the worker thread */ | 207 | /* Pass this task to the worker thread */ |
| 208 | h->flag |= STRUCT_HTTP_FLAG_WAITINGFORTASK; | 208 | cookie->flag |= STRUCT_HTTP_FLAG_WAITINGFORTASK; |
| 209 | 209 | ||
| 210 | /* Clients waiting for us should not easily timeout */ | 210 | /* Clients waiting for us should not easily timeout */ |
| 211 | taia_uint( &t, 0 ); io_timeout( client_socket, t ); | 211 | taia_uint( &t, 0 ); io_timeout( sock, t ); |
| 212 | fullscrape_deliver( client_socket, format ); | 212 | fullscrape_deliver( sock, format ); |
| 213 | io_dontwantread( client_socket ); | 213 | io_dontwantread( sock ); |
| 214 | return ws->reply_size = -2; | 214 | return ws->reply_size = -2; |
| 215 | } | 215 | } |
| 216 | #endif | 216 | #endif |
| @@ -219,8 +219,8 @@ static const ot_keywords keywords_format[] = | |||
| 219 | if( ( mode & TASK_CLASS_MASK ) == TASK_STATS ) { | 219 | if( ( mode & TASK_CLASS_MASK ) == TASK_STATS ) { |
| 220 | tai6464 t; | 220 | tai6464 t; |
| 221 | /* Complex stats also include expensive memory debugging tools */ | 221 | /* Complex stats also include expensive memory debugging tools */ |
| 222 | taia_uint( &t, 0 ); io_timeout( client_socket, t ); | 222 | taia_uint( &t, 0 ); io_timeout( sock, t ); |
| 223 | stats_deliver( client_socket, mode ); | 223 | stats_deliver( sock, mode ); |
| 224 | return ws->reply_size = -2; | 224 | return ws->reply_size = -2; |
| 225 | } | 225 | } |
| 226 | 226 | ||
| @@ -231,36 +231,36 @@ static const ot_keywords keywords_format[] = | |||
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | #ifdef WANT_FULLSCRAPE | 233 | #ifdef WANT_FULLSCRAPE |
| 234 | static ssize_t http_handle_fullscrape( const int64 client_socket, struct ot_workstruct *ws ) { | 234 | static ssize_t http_handle_fullscrape( const int64 sock, struct ot_workstruct *ws ) { |
| 235 | struct http_data* h = io_getcookie( client_socket ); | 235 | struct http_data* cookie = io_getcookie( sock ); |
| 236 | int format = 0; | 236 | int format = 0; |
| 237 | tai6464 t; | 237 | tai6464 t; |
| 238 | 238 | ||
| 239 | #ifdef WANT_COMPRESSION_GZIP | 239 | #ifdef WANT_COMPRESSION_GZIP |
| 240 | ws->request[ws->request_size-1] = 0; | 240 | ws->request[ws->request_size-1] = 0; |
| 241 | if( strstr( ws->request, "gzip" ) ) { | 241 | if( strstr( ws->request, "gzip" ) ) { |
| 242 | h->flag |= STRUCT_HTTP_FLAG_GZIP; | 242 | cookie->flag |= STRUCT_HTTP_FLAG_GZIP; |
| 243 | format = TASK_FLAG_GZIP; | 243 | format = TASK_FLAG_GZIP; |
| 244 | stats_issue_event( EVENT_FULLSCRAPE_REQUEST_GZIP, 0, (uintptr_t)h->ip ); | 244 | stats_issue_event( EVENT_FULLSCRAPE_REQUEST_GZIP, 0, (uintptr_t)cookie->ip ); |
| 245 | } else | 245 | } else |
| 246 | #endif | 246 | #endif |
| 247 | stats_issue_event( EVENT_FULLSCRAPE_REQUEST, 0, (uintptr_t)h->ip ); | 247 | stats_issue_event( EVENT_FULLSCRAPE_REQUEST, 0, (uintptr_t)cookie->ip ); |
| 248 | 248 | ||
| 249 | #ifdef _DEBUG_HTTPERROR | 249 | #ifdef _DEBUG_HTTPERROR |
| 250 | write( 2, ws->debugbuf, G_DEBUGBUF_SIZE ); | 250 | write( 2, ws->debugbuf, G_DEBUGBUF_SIZE ); |
| 251 | #endif | 251 | #endif |
| 252 | 252 | ||
| 253 | /* Pass this task to the worker thread */ | 253 | /* Pass this task to the worker thread */ |
| 254 | h->flag |= STRUCT_HTTP_FLAG_WAITINGFORTASK; | 254 | cookie->flag |= STRUCT_HTTP_FLAG_WAITINGFORTASK; |
| 255 | /* Clients waiting for us should not easily timeout */ | 255 | /* Clients waiting for us should not easily timeout */ |
| 256 | taia_uint( &t, 0 ); io_timeout( client_socket, t ); | 256 | taia_uint( &t, 0 ); io_timeout( sock, t ); |
| 257 | fullscrape_deliver( client_socket, TASK_FULLSCRAPE | format ); | 257 | fullscrape_deliver( sock, TASK_FULLSCRAPE | format ); |
| 258 | io_dontwantread( client_socket ); | 258 | io_dontwantread( sock ); |
| 259 | return ws->reply_size = -2; | 259 | return ws->reply_size = -2; |
| 260 | } | 260 | } |
| 261 | #endif | 261 | #endif |
| 262 | 262 | ||
| 263 | static ssize_t http_handle_scrape( const int64 client_socket, struct ot_workstruct *ws, char *read_ptr ) { | 263 | static ssize_t http_handle_scrape( const int64 sock, struct ot_workstruct *ws, char *read_ptr ) { |
| 264 | static const ot_keywords keywords_scrape[] = { { "info_hash", 1 }, { NULL, -3 } }; | 264 | static const ot_keywords keywords_scrape[] = { { "info_hash", 1 }, { NULL, -3 } }; |
| 265 | 265 | ||
| 266 | ot_hash * multiscrape_buf = (ot_hash*)ws->request; | 266 | ot_hash * multiscrape_buf = (ot_hash*)ws->request; |
| @@ -305,7 +305,7 @@ static ot_keywords keywords_announce[] = { { "port", 1 }, { "left", 2 }, { "even | |||
| 305 | #endif | 305 | #endif |
| 306 | { NULL, -3 } }; | 306 | { NULL, -3 } }; |
| 307 | static ot_keywords keywords_announce_event[] = { { "completed", 1 }, { "stopped", 2 }, { NULL, -3 } }; | 307 | static ot_keywords keywords_announce_event[] = { { "completed", 1 }, { "stopped", 2 }, { NULL, -3 } }; |
| 308 | static ssize_t http_handle_announce( const int64 client_socket, struct ot_workstruct *ws, char *read_ptr ) { | 308 | static ssize_t http_handle_announce( const int64 sock, struct ot_workstruct *ws, char *read_ptr ) { |
| 309 | int numwant, tmp, scanon; | 309 | int numwant, tmp, scanon; |
| 310 | ot_peer peer; | 310 | ot_peer peer; |
| 311 | ot_hash *hash = NULL; | 311 | ot_hash *hash = NULL; |
| @@ -320,7 +320,7 @@ static ssize_t http_handle_announce( const int64 client_socket, struct ot_workst | |||
| 320 | ++read_ptr; | 320 | ++read_ptr; |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | OT_SETIP( &peer, ((struct http_data*)io_getcookie( client_socket ) )->ip ); | 323 | OT_SETIP( &peer, ((struct http_data*)io_getcookie( sock ) )->ip ); |
| 324 | OT_SETPORT( &peer, &port ); | 324 | OT_SETPORT( &peer, &port ); |
| 325 | OT_PEERFLAG( &peer ) = 0; | 325 | OT_PEERFLAG( &peer ) = 0; |
| 326 | numwant = 50; | 326 | numwant = 50; |
| @@ -400,7 +400,7 @@ static ssize_t http_handle_announce( const int64 client_socket, struct ot_workst | |||
| 400 | return ws->reply_size; | 400 | return ws->reply_size; |
| 401 | } | 401 | } |
| 402 | 402 | ||
| 403 | ssize_t http_handle_request( const int64 client_socket, struct ot_workstruct *ws ) { | 403 | ssize_t http_handle_request( const int64 sock, struct ot_workstruct *ws ) { |
| 404 | ssize_t reply_off, len; | 404 | ssize_t reply_off, len; |
| 405 | char *read_ptr = ws->request, *write_ptr; | 405 | char *read_ptr = ws->request, *write_ptr; |
| 406 | 406 | ||
| @@ -433,17 +433,17 @@ ssize_t http_handle_request( const int64 client_socket, struct ot_workstruct *ws | |||
| 433 | 433 | ||
| 434 | /* This is the hardcore match for announce*/ | 434 | /* This is the hardcore match for announce*/ |
| 435 | if( ( *write_ptr == 'a' ) || ( *write_ptr == '?' ) ) | 435 | if( ( *write_ptr == 'a' ) || ( *write_ptr == '?' ) ) |
| 436 | http_handle_announce( client_socket, ws, read_ptr ); | 436 | http_handle_announce( sock, ws, read_ptr ); |
| 437 | #ifdef WANT_FULLSCRAPE | 437 | #ifdef WANT_FULLSCRAPE |
| 438 | else if( !memcmp( write_ptr, "scrape HTTP/", 12 ) ) | 438 | else if( !memcmp( write_ptr, "scrape HTTP/", 12 ) ) |
| 439 | http_handle_fullscrape( client_socket, ws ); | 439 | http_handle_fullscrape( sock, ws ); |
| 440 | #endif | 440 | #endif |
| 441 | /* This is the hardcore match for scrape */ | 441 | /* This is the hardcore match for scrape */ |
| 442 | else if( !memcmp( write_ptr, "sc", 2 ) ) | 442 | else if( !memcmp( write_ptr, "sc", 2 ) ) |
| 443 | http_handle_scrape( client_socket, ws, read_ptr ); | 443 | http_handle_scrape( sock, ws, read_ptr ); |
| 444 | /* All the rest is matched the standard way */ | 444 | /* All the rest is matched the standard way */ |
| 445 | else if( !memcmp( write_ptr, "stats", 5) ) | 445 | else if( !memcmp( write_ptr, "stats", 5) ) |
| 446 | http_handle_stats( client_socket, ws, read_ptr ); | 446 | http_handle_stats( sock, ws, read_ptr ); |
| 447 | else | 447 | else |
| 448 | HTTPERROR_404; | 448 | HTTPERROR_404; |
| 449 | 449 | ||
| @@ -469,7 +469,7 @@ ssize_t http_handle_request( const int64 client_socket, struct ot_workstruct *ws | |||
| 469 | /* 3. Finally we join both blocks neatly */ | 469 | /* 3. Finally we join both blocks neatly */ |
| 470 | ws->outbuf[ SUCCESS_HTTP_HEADER_LENGTH - 1 ] = '\n'; | 470 | ws->outbuf[ SUCCESS_HTTP_HEADER_LENGTH - 1 ] = '\n'; |
| 471 | 471 | ||
| 472 | http_senddata( client_socket, ws ); | 472 | http_senddata( sock, ws ); |
| 473 | return ws->reply_size; | 473 | return ws->reply_size; |
| 474 | } | 474 | } |
| 475 | 475 | ||
