Skip to content

Commit 2064462

Browse files
committed
Merge branch 'HerrCai0907-fix'
2 parents 825c3fb + 0728888 commit 2064462

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

httplib.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -871,8 +871,13 @@ class Server {
871871
Server &set_default_file_mimetype(const std::string &mime);
872872
Server &set_file_request_handler(Handler handler);
873873

874-
Server &set_error_handler(HandlerWithResponse handler);
875-
Server &set_error_handler(Handler handler);
874+
template <class ErrorHandlerFunc>
875+
Server &set_error_handler(ErrorHandlerFunc &&handler) {
876+
return set_error_handler_core(
877+
std::forward<ErrorHandlerFunc>(handler),
878+
std::is_convertible<ErrorHandlerFunc, HandlerWithResponse>{});
879+
}
880+
876881
Server &set_exception_handler(ExceptionHandler handler);
877882
Server &set_pre_routing_handler(HandlerWithResponse handler);
878883
Server &set_post_routing_handler(Handler handler);
@@ -943,6 +948,9 @@ class Server {
943948
static std::unique_ptr<detail::MatcherBase>
944949
make_matcher(const std::string &pattern);
945950

951+
Server &set_error_handler_core(HandlerWithResponse handler, std::true_type);
952+
Server &set_error_handler_core(Handler handler, std::false_type);
953+
946954
socket_t create_server_socket(const std::string &host, int port,
947955
int socket_flags,
948956
SocketOptions socket_options) const;
@@ -5808,12 +5816,14 @@ inline Server &Server::set_file_request_handler(Handler handler) {
58085816
return *this;
58095817
}
58105818

5811-
inline Server &Server::set_error_handler(HandlerWithResponse handler) {
5819+
inline Server &Server::set_error_handler_core(HandlerWithResponse handler,
5820+
std::true_type) {
58125821
error_handler_ = std::move(handler);
58135822
return *this;
58145823
}
58155824

5816-
inline Server &Server::set_error_handler(Handler handler) {
5825+
inline Server &Server::set_error_handler_core(Handler handler,
5826+
std::false_type) {
58175827
error_handler_ = [handler](const Request &req, Response &res) {
58185828
handler(req, res);
58195829
return HandlerResponse::Handled;

0 commit comments

Comments
 (0)