@@ -547,7 +547,7 @@ class Server {
547
547
int bind_internal (const char *host, int port, int socket_flags);
548
548
bool listen_internal ();
549
549
550
- bool routing (Request &req, Response &res, ContentReader content_reader );
550
+ bool routing (Request &req, Response &res, Stream &strm, bool last_connection );
551
551
bool handle_file_request (Request &req, Response &res);
552
552
bool dispatch_request (Request &req, Response &res, Handlers &handlers);
553
553
bool dispatch_request_for_content_reader (Request &req, Response &res,
@@ -2790,31 +2790,38 @@ inline bool Server::listen_internal() {
2790
2790
return ret;
2791
2791
}
2792
2792
2793
- inline bool Server::routing (Request &req, Response &res,
2794
- ContentReader content_reader) {
2793
+ inline bool Server::routing (Request &req, Response &res, Stream &strm, bool last_connection) {
2795
2794
// File handler
2796
2795
if (req.method == " GET" && handle_file_request (req, res)) { return true ; }
2797
2796
2798
2797
// Content reader handler
2799
- if (req.method == " POST" ) {
2800
- if (dispatch_request_for_content_reader (req, res, content_reader,
2801
- post_handlers_for_content_reader)) {
2802
- return true ;
2803
- }
2804
- } else if (req.method == " PUT" ) {
2805
- if (dispatch_request_for_content_reader (req, res, content_reader,
2806
- put_handlers_for_content_reader)) {
2807
- return true ;
2808
- }
2809
- } else if (req.method == " PATCH" ) {
2810
- if (dispatch_request_for_content_reader (
2811
- req, res, content_reader, patch_handlers_for_content_reader)) {
2812
- return true ;
2798
+ if (req.method == " POST" || req.method == " PUT" || req.method == " PATCH" ) {
2799
+ ContentReader content_reader = [&](ContentReceiver receiver) {
2800
+ return read_content_with_content_receiver (strm, last_connection, req, res, receiver);
2801
+ };
2802
+
2803
+ if (req.method == " POST" ) {
2804
+ if (dispatch_request_for_content_reader (req, res, content_reader,
2805
+ post_handlers_for_content_reader)) {
2806
+ return true ;
2807
+ }
2808
+ } else if (req.method == " PUT" ) {
2809
+ if (dispatch_request_for_content_reader (req, res, content_reader,
2810
+ put_handlers_for_content_reader)) {
2811
+ return true ;
2812
+ }
2813
+ } else if (req.method == " PATCH" ) {
2814
+ if (dispatch_request_for_content_reader (
2815
+ req, res, content_reader, patch_handlers_for_content_reader)) {
2816
+ return true ;
2817
+ }
2813
2818
}
2814
2819
}
2815
2820
2816
2821
// Read content into `req.body`
2817
- if (!content_reader (nullptr )) { return false ; }
2822
+ if (!read_content (strm, last_connection, req, res)) {
2823
+ return false ;
2824
+ }
2818
2825
2819
2826
// Regular handler
2820
2827
if (req.method == " GET" || req.method == " HEAD" ) {
@@ -2916,23 +2923,8 @@ Server::process_request(Stream &strm, bool last_connection,
2916
2923
2917
2924
if (setup_request) { setup_request (req); }
2918
2925
2919
- // Body
2920
- ContentReader content_reader = [&](ContentReceiver receiver) {
2921
- if (req.method == " POST" || req.method == " PUT" || req.method == " PATCH" ) {
2922
- if (receiver) {
2923
- return read_content_with_content_receiver (strm, last_connection, req,
2924
- res, receiver);
2925
- } else {
2926
- return read_content (strm, last_connection, req, res);
2927
- }
2928
- } else if (req.method == " PRI" ) {
2929
- return read_content (strm, last_connection, req, res);
2930
- }
2931
- return true ;
2932
- };
2933
-
2934
2926
// Rounting
2935
- if (routing (req, res, content_reader )) {
2927
+ if (routing (req, res, strm, last_connection )) {
2936
2928
if (res.status == -1 ) { res.status = req.ranges .empty () ? 200 : 206 ; }
2937
2929
} else {
2938
2930
if (res.status == -1 ) { res.status = 404 ; }
0 commit comments