OSDN Git Service

Ignore packet of not first HTTP header message.
[ultramonkey-l7/sslproxy.git] / src / packet_editor.cpp
index 4a05533..629a140 100644 (file)
@@ -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)