Browse Source

Content-Type for POST

pull/97/head
orignal 10 years ago
parent
commit
124007dc31
  1. 9
      HTTPProxy.cpp
  2. 18
      HTTPServer.cpp

9
HTTPProxy.cpp

@ -63,9 +63,12 @@ namespace proxy
request r; request r;
ExtractRequest(r); ExtractRequest(r);
parseHeaders(m_Buffer, r.headers); parseHeaders(m_Buffer, r.headers);
const char * data = strstr (m_Buffer, "\r\n\r\n"); const char * data = nullptr;
if (data) data += 4; if (r.method == "POST")
{
data = strstr (m_Buffer, "\r\n\r\n");
if (data) data += 4;
}
LogPrint("Requesting ", r.host, " with path ", r.uri, " and method ", r.method); LogPrint("Requesting ", r.host, " with path ", r.uri, " and method ", r.method);
HandleDestinationRequest(r.host, r.method, data ? std::string (data) : "" , r.uri); HandleDestinationRequest(r.host, r.method, data ? std::string (data) : "" , r.uri);
} }

18
HTTPServer.cpp

@ -760,15 +760,15 @@ namespace util
m_Stream = i2p::stream::CreateStream (*leaseSet); m_Stream = i2p::stream::CreateStream (*leaseSet);
if (m_Stream) if (m_Stream)
{ {
std::string request = method+" " + uri + " HTTP/1.1\n Host:" + fullAddress + "\r\n"; std::string request = method + " " + uri + " HTTP/1.1\r\nHost:" + fullAddress + "\r\n";
if (!strcmp(method.c_str(), "GET") && data.size () > 0) if (method == "POST" && data.size () > 0)
{ {
// POST/PUT, apply body // POST/PUT, apply body
request += "Content-Length: " ; request += "Content-Type: application/x-www-form-urlencoded\r\n";
request += data.size (); request += "Content-Length: " + boost::lexical_cast<std::string>(data.size ()) + "\r\n";
request += "\r\n\r\n" + data; request += "\r\n" + data;
} }
LogPrint("HTTP Client Request: ", request); LogPrint("HTTP Client Request: ", request);
m_Stream->Send ((uint8_t *)request.c_str (), request.size (), 10); m_Stream->Send ((uint8_t *)request.c_str (), request.size (), 10);
AsyncStreamReceive (); AsyncStreamReceive ();
} }

Loading…
Cancel
Save