diff --git a/HTTPSock.cpp b/HTTPSock.cpp index 5c64dde4..7a5f2c30 100644 --- a/HTTPSock.cpp +++ b/HTTPSock.cpp @@ -4,8 +4,9 @@ CHTTPSock::CHTTPSock() : Csock() { m_bSentHeader = false; m_bGotHeader = false; - m_bPost = false; m_bLoggedIn = false; + m_bPost = false; + m_bDone = true; m_uPostLen = 0; EnableReadLine(); } @@ -15,6 +16,7 @@ CHTTPSock::CHTTPSock(const CString& sHostname, unsigned short uPort, int iTimeou m_bGotHeader = false; m_bLoggedIn = false; m_bPost = false; + m_bDone = true; m_uPostLen = 0; EnableReadLine(); } @@ -22,7 +24,7 @@ CHTTPSock::CHTTPSock(const CString& sHostname, unsigned short uPort, int iTimeou CHTTPSock::~CHTTPSock() {} void CHTTPSock::ReadData(const char* data, int len) { - if (m_bGotHeader && m_bPost) { + if (!m_bDone && m_bGotHeader && m_bPost) { m_sPostData.append(data, len); CheckPost(); } @@ -33,6 +35,8 @@ void CHTTPSock::CheckPost() { ParseParams(m_sPostData.Left(m_uPostLen)); GetPage(); m_sPostData.clear(); + m_bDone = true; + Close(); } } @@ -117,6 +121,10 @@ const CString& CHTTPSock::GetPass() const { return m_sPass; } +const CString& CHTTPSock::GetParamString() const { + return m_sPostData; +} + CString CHTTPSock::GetParam(const CString& sName) const { CString sRet; diff --git a/HTTPSock.h b/HTTPSock.h index 7fbfc9fa..ab0a238e 100644 --- a/HTTPSock.h +++ b/HTTPSock.h @@ -47,6 +47,7 @@ public: CString GetParam(const CString& sName) const; const CString& GetUser() const; const CString& GetPass() const; + const CString& GetParamString() const; unsigned int GetParamValues(const CString& sName, VCString& vsRet) const; const map& GetParams() const; // !Getters @@ -56,6 +57,7 @@ protected: bool m_bGotHeader; bool m_bLoggedIn; bool m_bPost; + bool m_bDone; unsigned long m_uPostLen; CString m_sPostData; CString m_sURI;