From: Kohei TANUMA Date: Thu, 1 Oct 2009 08:33:22 +0000 (+0900) Subject: Ignore packet of not first HTTP header message. X-Git-Url: http://git.osdn.net/view?p=ultramonkey-l7%2Fsslproxy.git;a=commitdiff_plain;h=4b182fd686b21bc82aabf7b44851444607744603 Ignore packet of not first HTTP header message. --- diff --git a/src/http_message.cpp b/src/http_message.cpp index 0afd563..99a7dcb 100644 --- a/src/http_message.cpp +++ b/src/http_message.cpp @@ -456,6 +456,7 @@ void http_message::parse(std::string message) } } catch (...) { + this->_body.clear(); LOGGER_PUT_LOG_INFO(LOG_CAT_PACKET_EDIT_HTTP, 39, "Exception occured by parsing HTTP message."); } diff --git a/src/http_request.cpp b/src/http_request.cpp index b386915..14207bb 100644 --- a/src/http_request.cpp +++ b/src/http_request.cpp @@ -544,6 +544,9 @@ void http_request::parse(std::string request) } } catch (...) { + this->_method.clear(); + this->_request_uri.clear(); + this->_http_version.clear(); LOGGER_PUT_LOG_INFO(LOG_CAT_PACKET_EDIT_HTTP, 14, "Exception occured by parsing HTTP request."); } diff --git a/src/http_response.cpp b/src/http_response.cpp index 12f9262..fdd818e 100644 --- a/src/http_response.cpp +++ b/src/http_response.cpp @@ -530,6 +530,9 @@ void http_response::parse(std::string response) } } catch (...) { + this->_http_version.clear(); + this->_status_code.clear(); + this->_reason_phrase.clear(); LOGGER_PUT_LOG_INFO(LOG_CAT_PACKET_EDIT_HTTP, 31, "Exception occured by parsing HTTP response."); } diff --git a/src/packet_editor.cpp b/src/packet_editor.cpp index 4a05533..629a140 100644 --- a/src/packet_editor.cpp +++ b/src/packet_editor.cpp @@ -80,6 +80,11 @@ void packet_editor::edit_client(char* client_msg, size_t& client_length) it = ::http_request_header.begin(); end = ::http_request_header.end(); http_request request(std::string(client_msg, client_length)); + + // Ignore when client_msg is not HTTP message + if (request.method().empty()) + goto packet_edit_out; + for (;it != end; ++it) { // Set request header field if (it->first == "set") { @@ -138,6 +143,8 @@ void packet_editor::edit_client(char* client_msg, size_t& client_length) * Insert other protocol editor. */ +packet_edit_out: + if (request.modified()) { std::string edited = request.as_string(); // New client message is too long (over buffer size) @@ -178,6 +185,11 @@ void packet_editor::edit_server(char* server_msg, size_t& server_length) it = ::http_response_header.begin(); end = ::http_response_header.end(); http_response response(std::string(server_msg, server_length)); + + // Ignore when server_msg is not HTTP message + if (response.http_version().empty()) + goto packet_edit_out; + for (;it != end; ++it) { // Set request header field if (it->first == "set") { @@ -236,6 +248,8 @@ void packet_editor::edit_server(char* server_msg, size_t& server_length) * Insert other protocol editor. */ +packet_edit_out: + if (response.modified()) { std::string edited = response.as_string(); // New server message is too long (over buffer size)