@@ -628,6 +628,9 @@ class Server {
628
628
void set_file_request_handler (Handler handler);
629
629
630
630
void set_error_handler (Handler handler);
631
+ void set_pre_routing_handler (Handler handler);
632
+ void set_post_routing_handler (Handler handler);
633
+
631
634
void set_expect_100_continue_handler (Expect100ContinueHandler handler);
632
635
void set_logger (Logger logger);
633
636
@@ -735,6 +738,8 @@ class Server {
735
738
HandlersForContentReader delete_handlers_for_content_reader_;
736
739
Handlers options_handlers_;
737
740
Handler error_handler_;
741
+ Handler pre_routing_handler_;
742
+ Handler post_routing_handler_;
738
743
Logger logger_;
739
744
Expect100ContinueHandler expect_100_continue_handler_;
740
745
@@ -4130,10 +4135,12 @@ inline void Server::set_error_handler(Handler handler) {
4130
4135
error_handler_ = std::move (handler);
4131
4136
}
4132
4137
4133
- inline void Server::set_tcp_nodelay (bool on) { tcp_nodelay_ = on; }
4138
+ inline void Server::set_pre_routing_handler (Handler handler) {
4139
+ pre_routing_handler_ = std::move (handler);
4140
+ }
4134
4141
4135
- inline void Server::set_socket_options (SocketOptions socket_options ) {
4136
- socket_options_ = std::move (socket_options );
4142
+ inline void Server::set_post_routing_handler (Handler handler ) {
4143
+ post_routing_handler_ = std::move (handler );
4137
4144
}
4138
4145
4139
4146
inline void Server::set_logger (Logger logger) { logger_ = std::move (logger); }
@@ -4143,6 +4150,12 @@ Server::set_expect_100_continue_handler(Expect100ContinueHandler handler) {
4143
4150
expect_100_continue_handler_ = std::move (handler);
4144
4151
}
4145
4152
4153
+ inline void Server::set_tcp_nodelay (bool on) { tcp_nodelay_ = on; }
4154
+
4155
+ inline void Server::set_socket_options (SocketOptions socket_options) {
4156
+ socket_options_ = std::move (socket_options);
4157
+ }
4158
+
4146
4159
inline void Server::set_keep_alive_max_count (size_t count) {
4147
4160
keep_alive_max_count_ = count;
4148
4161
}
@@ -4240,7 +4253,7 @@ inline bool Server::write_response_core(Stream &strm, bool close_connection,
4240
4253
std::string boundary;
4241
4254
if (need_apply_ranges) { apply_ranges (req, res, content_type, boundary); }
4242
4255
4243
- // Preapre additional headers
4256
+ // Prepare additional headers
4244
4257
if (close_connection || req.get_header_value (" Connection" ) == " close" ) {
4245
4258
res.set_header (" Connection" , " close" );
4246
4259
} else {
@@ -4264,7 +4277,8 @@ inline bool Server::write_response_core(Stream &strm, bool close_connection,
4264
4277
res.set_header (" Accept-Ranges" , " bytes" );
4265
4278
}
4266
4279
4267
- detail::BufferStream bstrm;
4280
+ // TODO: Post-routing handler support?
4281
+ if (post_routing_handler_) { post_routing_handler_ (req, res); }
4268
4282
4269
4283
// Response line and headers
4270
4284
{
@@ -4570,6 +4584,9 @@ inline bool Server::listen_internal() {
4570
4584
}
4571
4585
4572
4586
inline bool Server::routing (Request &req, Response &res, Stream &strm) {
4587
+ // TODO: Pre-routing handler support?
4588
+ if (pre_routing_handler_) { pre_routing_handler_ (req, res); }
4589
+
4573
4590
// File handler
4574
4591
bool is_head_request = req.method == " HEAD" ;
4575
4592
if ((req.method == " GET" || is_head_request) &&
@@ -5268,7 +5285,7 @@ inline bool ClientImpl::write_content_with_provider(Stream &strm,
5268
5285
5269
5286
inline bool ClientImpl::write_request (Stream &strm, const Request &req,
5270
5287
bool close_connection, Error &error) {
5271
- // Prepare additonal headers
5288
+ // Prepare additional headers
5272
5289
Headers headers;
5273
5290
if (close_connection) { headers.emplace (" Connection" , " close" ); }
5274
5291
0 commit comments