@@ -69,16 +69,10 @@ static void dummy_mk_http_request_init(struct mk_http_session *session,
69
69
70
70
static int http1_evict_request (struct flb_http1_server_session * session )
71
71
{
72
- uintptr_t session_buffer_upper_bound ;
73
- uintptr_t session_buffer_lower_bound ;
74
72
size_t session_buffer_length ;
75
73
cfl_sds_t session_buffer ;
76
- size_t content_length ;
77
74
size_t request_length ;
78
- uintptr_t request_end ;
79
75
80
- request_end = 0 ;
81
- content_length = 0 ;
82
76
session_buffer = session -> parent -> incoming_data ;
83
77
84
78
if (session_buffer == NULL ) {
@@ -87,46 +81,28 @@ static int http1_evict_request(struct flb_http1_server_session *session)
87
81
88
82
session_buffer_length = cfl_sds_len (session_buffer );
89
83
90
- if (session -> inner_request .data .data != NULL ) {
91
- content_length = session -> inner_request .data .len ;
84
+ request_length = mk_http_parser_request_size (& session -> inner_parser ,
85
+ session_buffer ,
86
+ session_buffer_length );
92
87
93
- request_end = (uintptr_t ) session -> inner_request .data .data ;
94
- request_end += content_length ;
95
- }
96
- else {
97
- request_end = (uintptr_t ) strstr (session_buffer ,
98
- "\r\n\r\n" );
88
+ if (request_length == -1 ||
89
+ request_length > session_buffer_length ) {
90
+ cfl_sds_set_len (session_buffer , 0 );
99
91
100
- if (request_end != 0 ) {
101
- request_end += 4 ;
102
- }
92
+ return -1 ;
103
93
}
104
94
105
- if (request_end != 0 ) {
106
- session_buffer_lower_bound = (uintptr_t ) session_buffer ;
107
- session_buffer_upper_bound = (uintptr_t ) & session_buffer [session_buffer_length ];
108
-
109
- if (request_end < session_buffer_lower_bound ||
110
- request_end > session_buffer_upper_bound ) {
111
- return -1 ;
112
- }
113
-
114
- request_length = (size_t ) (request_end - session_buffer_lower_bound );
115
-
116
- if (request_length == session_buffer_length ) {
117
- session_buffer_length = 0 ;
118
- }
119
- else {
120
- session_buffer_length -= request_length ;
95
+ if ((session_buffer_length - request_length ) > 0 ) {
96
+ session_buffer_length -= request_length ;
121
97
122
- memmove (session_buffer ,
123
- & session_buffer [request_length ],
124
- session_buffer_length );
98
+ memmove (session_buffer ,
99
+ & session_buffer [request_length ],
100
+ session_buffer_length );
125
101
126
- session_buffer [session_buffer_length ] = '\0' ;
127
- }
128
-
129
- cfl_sds_set_len (session_buffer , session_buffer_length );
102
+ session_buffer [session_buffer_length ] = '\0' ;
103
+ }
104
+ else {
105
+ cfl_sds_set_len (session_buffer , 0 );
130
106
}
131
107
132
108
return 0 ;
0 commit comments