1
1
/* ************************************************************************* */
2
2
#if !defined(FIO_INCLUDE_FILE ) /* Dev test - ignore line */
3
3
#define FIO___DEV___ /* Development inclusion - ignore line */
4
- #define FIO_MODULE_NAME module /* Development inclusion - ignore line */
4
+ #define FIO_HTTP1_PARSER /* Development inclusion - ignore line */
5
5
#include "./include.h" /* Development inclusion - ignore line */
6
6
#endif /* Development inclusion - ignore line */
7
7
/* *****************************************************************************
16
16
17
17
Copyright and License: see header file (000 copyright.h) or top of file
18
18
***************************************************************************** */
19
- #if defined(FIO_HTTP1_PARSER ) && !defined(H___FIO_HTTP1_PARSER___H )
20
- #define H___FIO_HTTP1_PARSER___H
19
+ #if defined(FIO_HTTP1_PARSER ) && !defined(H___FIO_HTTP1_PARSER___H ) && \
20
+ (defined( FIO_EXTERN_COMPLETE ) || !defined( FIO_EXTERN ))
21
21
/* *****************************************************************************
22
22
The HTTP/1.1 provides static functions only, always as part or implementation.
23
23
***************************************************************************** */
24
- #if defined( FIO_EXTERN_COMPLETE ) || !defined( FIO_EXTERN )
24
+ #define H___FIO_HTTP1_PARSER___H
25
25
26
26
/* *****************************************************************************
27
27
HTTP/1.x Parser API
@@ -171,7 +171,7 @@ static int fio_http1___start(fio_http1_parser_s *p,
171
171
buf -> buf = start ;
172
172
return fio_http1___finish (p , buf , udata );
173
173
}
174
- char * eol = FIO_MEMCHR (start , '\n' , buf -> len );
174
+ char * eol = ( char * ) FIO_MEMCHR (start , '\n' , buf -> len );
175
175
if (!eol )
176
176
return 1 ;
177
177
if (start + 13 > eol ) /* test for minimal data GET HTTP/1 or ### HTTP/1 */
@@ -186,35 +186,36 @@ static int fio_http1___start(fio_http1_parser_s *p,
186
186
if (start [0 ] > ('0' - 1 ) && start [0 ] < ('9' + 1 ))
187
187
goto parse_response_line ;
188
188
/* request: method path version */
189
- if (!(tmp = FIO_MEMCHR (start , ' ' , eol - start )))
189
+ if (!(tmp = ( char * ) FIO_MEMCHR (start , ' ' , ( size_t )( eol - start ) )))
190
190
return -1 ;
191
- if (fio_http1_on_method (FIO_BUF_INFO2 (start , tmp - start ), udata ))
191
+ if (fio_http1_on_method (FIO_BUF_INFO2 (start , ( size_t )( tmp - start ) ), udata ))
192
192
return -1 ;
193
193
start = tmp + 1 ;
194
- if (!(tmp = FIO_MEMCHR (start , ' ' , eol - start )))
194
+ if (!(tmp = ( char * ) FIO_MEMCHR (start , ' ' , eol - start )))
195
195
return -1 ;
196
- if (fio_http1_on_url (FIO_BUF_INFO2 (start , tmp - start ), udata ))
196
+ if (fio_http1_on_url (FIO_BUF_INFO2 (start , ( size_t )( tmp - start ) ), udata ))
197
197
return -1 ;
198
198
start = tmp + 1 ;
199
199
if (start >= eol )
200
200
return -1 ;
201
201
if (fio_http1_on_version (
202
- FIO_BUF_INFO2 (start , ((eol - start ) > 14 ) ? 14 : (eol - start )),
202
+ FIO_BUF_INFO2 (start ,
203
+ (size_t )(((eol - start ) > 14 ) ? 14 : (eol - start ))),
203
204
udata ))
204
205
return -1 ;
205
206
return (p -> fn = fio_http1___read_header )(p , buf , udata );
206
207
207
208
parse_response_line :
208
209
/* response: version code text */
209
- if (!(tmp = FIO_MEMCHR (start , ' ' , eol - start )))
210
+ if (!(tmp = ( char * ) FIO_MEMCHR (start , ' ' , eol - start )))
210
211
return -1 ;
211
- if (fio_http1_on_version (FIO_BUF_INFO2 (start , (tmp - start )), udata ))
212
+ if (fio_http1_on_version (FIO_BUF_INFO2 (start , (size_t )( tmp - start )), udata ))
212
213
return -1 ;
213
214
start = tmp + 1 ;
214
- if (!(tmp = FIO_MEMCHR (start , ' ' , eol - start )))
215
+ if (!(tmp = ( char * ) FIO_MEMCHR (start , ' ' , eol - start )))
215
216
return -1 ;
216
217
if (fio_http1_on_status (fio_atol10 (& start ),
217
- FIO_BUF_INFO2 ((tmp + 1 ), eol - tmp ),
218
+ FIO_BUF_INFO2 ((tmp + 1 ), ( size_t )( eol - tmp ) ),
218
219
udata ))
219
220
return -1 ;
220
221
return (p -> fn = fio_http1___read_header )(p , buf , udata );
@@ -290,19 +291,19 @@ static inline int fio_http1___on_trailer(fio_http1_parser_s *p,
290
291
void * udata ) {
291
292
(void )p ;
292
293
fio_buf_info_s forbidden [] = {
293
- FIO_BUF_INFO1 ("authorization" ),
294
- FIO_BUF_INFO1 ("cache-control" ),
295
- FIO_BUF_INFO1 ("content-encoding" ),
296
- FIO_BUF_INFO1 ("content-length" ),
297
- FIO_BUF_INFO1 ("content-range" ),
298
- FIO_BUF_INFO1 ("content-type" ),
299
- FIO_BUF_INFO1 ("expect" ),
300
- FIO_BUF_INFO1 ("host" ),
301
- FIO_BUF_INFO1 ("max-forwards" ),
302
- FIO_BUF_INFO1 ("set-cookie" ),
303
- FIO_BUF_INFO1 ("te" ),
304
- FIO_BUF_INFO1 ("trailer" ),
305
- FIO_BUF_INFO1 ("transfer-encoding" ),
294
+ FIO_BUF_INFO1 (( char * ) "authorization" ),
295
+ FIO_BUF_INFO1 (( char * ) "cache-control" ),
296
+ FIO_BUF_INFO1 (( char * ) "content-encoding" ),
297
+ FIO_BUF_INFO1 (( char * ) "content-length" ),
298
+ FIO_BUF_INFO1 (( char * ) "content-range" ),
299
+ FIO_BUF_INFO1 (( char * ) "content-type" ),
300
+ FIO_BUF_INFO1 (( char * ) "expect" ),
301
+ FIO_BUF_INFO1 (( char * ) "host" ),
302
+ FIO_BUF_INFO1 (( char * ) "max-forwards" ),
303
+ FIO_BUF_INFO1 (( char * ) "set-cookie" ),
304
+ FIO_BUF_INFO1 (( char * ) "te" ),
305
+ FIO_BUF_INFO1 (( char * ) "trailer" ),
306
+ FIO_BUF_INFO1 (( char * ) "transfer-encoding" ),
306
307
FIO_BUF_INFO2 (NULL , 0 ),
307
308
}; /* known forbidden headers in trailer */
308
309
for (size_t i = 0 ; forbidden [i ].buf ; ++ i ) {
@@ -354,7 +355,7 @@ static inline int fio_http1___read_header_line(
354
355
int r ;
355
356
for (;;) {
356
357
char * start = buf -> buf ;
357
- char * eol = FIO_MEMCHR (start , '\n' , buf -> len );
358
+ char * eol = ( char * ) FIO_MEMCHR (start , '\n' , buf -> len );
358
359
char * div ;
359
360
fio_buf_info_s name , value ;
360
361
if (!eol )
@@ -369,15 +370,15 @@ static inline int fio_http1___read_header_line(
369
370
div = fio_http1___seek_header_div (start );
370
371
if (div [0 ] != ':' )
371
372
return -1 ;
372
- name = FIO_BUF_INFO2 (start , (div - start ));
373
+ name = FIO_BUF_INFO2 (start , (size_t )( div - start ));
373
374
do {
374
375
++ div ;
375
376
} while (* div == ' ' || * div == '\t' );
376
377
377
378
if (div != eol )
378
379
while (eol [-1 ] == ' ' || eol [-1 ] == '\t' )
379
380
-- eol ;
380
- value = FIO_BUF_INFO2 ((div == eol ) ? NULL : div , (eol - div ));
381
+ value = FIO_BUF_INFO2 ((div == eol ) ? NULL : div , (size_t )( eol - div ));
381
382
r = handler (p , name , value , udata );
382
383
if (FIO_UNLIKELY (r ))
383
384
return r ;
@@ -514,7 +515,5 @@ FIO_SFUNC void FIO_NAME_TEST(stl, FIO_MODULE_NAME)(void) {
514
515
/* *****************************************************************************
515
516
Cleanup
516
517
***************************************************************************** */
517
-
518
- #endif /* FIO_EXTERN_COMPLETE */
519
518
#undef FIO_HTTP1_PARSER
520
- #endif /* FIO_HTTP1_PARSER */
519
+ #endif /* FIO_HTTP1_PARSER && FIO_EXTERN_COMPLETE */
0 commit comments