diff --git a/include/crow/app.h b/include/crow/app.h index 2491ebc6a..cc549e6bc 100644 --- a/include/crow/app.h +++ b/include/crow/app.h @@ -52,9 +52,10 @@ namespace crow public: ///This crow application using self_t = Crow; +#ifndef CROW_ENABLE_SSL ///The HTTP server using server_t = Server; -#ifdef CROW_ENABLE_SSL +#else ///An HTTP server that runs on SSL with an SSLAdaptor using ssl_server_t = Server; #endif @@ -254,18 +255,22 @@ namespace crow ssl_server_->run(); } else -#endif { - server_ = std::move(std::unique_ptr(new server_t(this, bindaddr_, port_, server_name_, &middlewares_, concurrency_, nullptr))); - server_->set_tick_function(tick_interval_, tick_function_); - server_->signal_clear(); - for (auto snum : signals_) - { - server_->signal_add(snum); - } - notify_server_start(); - server_->run(); + CROW_LOG_CRITICAL << "SSL context not defined, please define a certificate or SSL context."; } +#else + + server_ = std::move(std::unique_ptr(new server_t(this, bindaddr_, port_, server_name_, &middlewares_, concurrency_, nullptr))); + server_->set_tick_function(tick_interval_, tick_function_); + server_->signal_clear(); + for (auto snum : signals_) + { + server_->signal_add(snum); + } + notify_server_start(); + server_->run(); + +#endif } ///Stop the server @@ -279,14 +284,16 @@ namespace crow } } else -#endif { + CROW_LOG_CRITICAL << "SSL context not defined, please define a certificate or SSL context."; + } +#else + if (server_) { server_->stop(); - } - } } - +#endif + } void debug_print() { CROW_LOG_DEBUG << "Routing:"; @@ -406,9 +413,9 @@ namespace crow #ifdef CROW_ENABLE_SSL std::unique_ptr ssl_server_; -#endif +#else std::unique_ptr server_; - +#endif std::vector signals_{SIGINT, SIGTERM}; bool server_started_{false}; diff --git a/include/crow/http_server.h b/include/crow/http_server.h index e6efa6fb0..edaf46772 100644 --- a/include/crow/http_server.h +++ b/include/crow/http_server.h @@ -23,7 +23,7 @@ namespace crow using namespace boost; using tcp = asio::ip::tcp; - template + template class Server { public: diff --git a/include/crow/routing.h b/include/crow/routing.h index 65746c6e5..4c19ae748 100644 --- a/include/crow/routing.h +++ b/include/crow/routing.h @@ -49,12 +49,13 @@ namespace crow } virtual void handle(const request&, response&, const routing_params&) = 0; +#ifndef CROW_ENABLE_SSL virtual void handle_upgrade(const request&, response& res, SocketAdaptor&&) { res = response(404); res.end(); } -#ifdef CROW_ENABLE_SSL +#else virtual void handle_upgrade(const request&, response& res, SSLAdaptor&&) { res = response(404); @@ -399,12 +400,12 @@ namespace crow res = response(404); res.end(); } - +#ifndef CROW_ENABLE_SSL void handle_upgrade(const request& req, response&, SocketAdaptor&& adaptor) override { new crow::websocket::Connection(req, std::move(adaptor), open_handler_, message_handler_, close_handler_, error_handler_, accept_handler_); } -#ifdef CROW_ENABLE_SSL +#else void handle_upgrade(const request& req, response&, SSLAdaptor&& adaptor) override { new crow::websocket::Connection(req, std::move(adaptor), open_handler_, message_handler_, close_handler_, error_handler_, accept_handler_); diff --git a/include/crow/socket_adaptors.h b/include/crow/socket_adaptors.h index a6c49ac9a..09aa66c2e 100644 --- a/include/crow/socket_adaptors.h +++ b/include/crow/socket_adaptors.h @@ -13,7 +13,7 @@ namespace crow { using namespace boost; using tcp = asio::ip::tcp; - +#ifndef CROW_ENABLE_SSL ///A wrapper for the asio::ip::tcp::socket and asio::ssl::stream struct SocketAdaptor { @@ -83,7 +83,7 @@ namespace crow tcp::socket socket_; }; -#ifdef CROW_ENABLE_SSL +#else struct SSLAdaptor { using context = boost::asio::ssl::context;