From 84b234b68b178faca65cba0388fcd8c2e9f5aafa Mon Sep 17 00:00:00 2001 From: James Yonan Date: Sun, 19 Apr 2015 00:13:20 -0600 Subject: [PATCH] Refactored web services classes (openvpn/ws) to support HTTP/S servers. --- openvpn/ws/httpcli.hpp | 86 ++++++++++++++++++++++++++++++------------ 1 file changed, 62 insertions(+), 24 deletions(-) diff --git a/openvpn/ws/httpcli.hpp b/openvpn/ws/httpcli.hpp index 844350f9..a35ed48f 100644 --- a/openvpn/ws/httpcli.hpp +++ b/openvpn/ws/httpcli.hpp @@ -159,10 +159,8 @@ namespace openvpn { { friend Base; - // calls tcp_* handlers - friend class TCPTransport::Link; - typedef TCPTransport::Link LinkImpl; + friend LinkImpl; // calls tcp_* handlers typedef AsioDispatchResolvesend(buf); } - void http_done_handler() // called by Base + bool base_send_queue_empty() + { + return link->send_queue_empty(); + } + + void base_http_done_handler() { if (halt) return; @@ -486,16 +531,9 @@ namespace openvpn { http_done(Status::E_SUCCESS, "Succeeded"); } - // error notification - void error_handler(const int errcode, const std::string& err) // called by Base + void base_error_handler(const int errcode, const std::string& err) { - const bool in_transaction = !ready; - const bool keepalive = alive; - stop(); - if (in_transaction) - http_done(errcode, err); - else if (keepalive) - http_keepalive_close(errcode, err); // keepalive connection close outside of transaction + error_handler(errcode, err); } boost::asio::io_service& io_service;