From b66722f73532e9c1d5df71f6a2f09b5da0163dee Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Fri, 20 Dec 2013 16:20:54 +0100 Subject: [PATCH] Fixed warnings in HTTP parser. --- src/HTTPServer/HTTPConnection.h | 2 +- src/HTTPServer/HTTPFormParser.cpp | 5 +++++ src/HTTPServer/HTTPMessage.h | 3 +++ src/HTTPServer/NameValueParser.cpp | 10 ++++++---- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/HTTPServer/HTTPConnection.h b/src/HTTPServer/HTTPConnection.h index 14603bb70..00941f2ae 100644 --- a/src/HTTPServer/HTTPConnection.h +++ b/src/HTTPServer/HTTPConnection.h @@ -39,7 +39,7 @@ public: } ; cHTTPConnection(cHTTPServer & a_HTTPServer); - ~cHTTPConnection(); + virtual ~cHTTPConnection(); /// Sends HTTP status code together with a_Reason (used for HTTP errors) void SendStatusAndReason(int a_StatusCode, const AString & a_Reason); diff --git a/src/HTTPServer/HTTPFormParser.cpp b/src/HTTPServer/HTTPFormParser.cpp index 596db424e..01c68881a 100644 --- a/src/HTTPServer/HTTPFormParser.cpp +++ b/src/HTTPServer/HTTPFormParser.cpp @@ -109,6 +109,11 @@ bool cHTTPFormParser::Finish(void) ParseFormUrlEncoded(); break; } + default: + { + // Nothing needed for other formats + break; + } } return (m_IsValid && m_IncomingData.empty()); } diff --git a/src/HTTPServer/HTTPMessage.h b/src/HTTPServer/HTTPMessage.h index f5284c535..2a4c2879e 100644 --- a/src/HTTPServer/HTTPMessage.h +++ b/src/HTTPServer/HTTPMessage.h @@ -32,6 +32,9 @@ public: cHTTPMessage(eKind a_Kind); + // Force a virtual destructor in all descendants + virtual ~cHTTPMessage() {}; + /// Adds a header into the internal map of headers. Recognizes special headers: Content-Type and Content-Length void AddHeader(const AString & a_Key, const AString & a_Value); diff --git a/src/HTTPServer/NameValueParser.cpp b/src/HTTPServer/NameValueParser.cpp index a27f07d19..fd56f6b24 100644 --- a/src/HTTPServer/NameValueParser.cpp +++ b/src/HTTPServer/NameValueParser.cpp @@ -97,15 +97,17 @@ void cNameValueParser::Parse(const char * a_Data, int a_Size) { ASSERT(m_State != psFinished); // Calling Parse() after Finish() is wrong! - if ((m_State == psInvalid) || (m_State == psFinished)) - { - return; - } int Last = 0; for (int i = 0; i < a_Size;) { switch (m_State) { + case psInvalid: + case psFinished: + { + return; + } + case psKeySpace: { // Skip whitespace until a non-whitespace is found, then start the key: