|
|
@ -230,11 +230,6 @@ namespace http { |
|
|
|
{ "stats.i2p", "http://7tbay5p4kzeekxvyvbf6v7eauazemsnnl2aoyqhg5jzpr5eke7tq.b32.i2p/cgi-bin/jump.cgi?a=" }, |
|
|
|
{ "stats.i2p", "http://7tbay5p4kzeekxvyvbf6v7eauazemsnnl2aoyqhg5jzpr5eke7tq.b32.i2p/cgi-bin/jump.cgi?a=" }, |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::Terminate () |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
m_Socket->close (); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::Receive () |
|
|
|
void HTTPConnection::Receive () |
|
|
|
{ |
|
|
|
{ |
|
|
|
m_Socket->async_read_some (boost::asio::buffer (m_Buffer, HTTP_CONNECTION_BUFFER_SIZE), |
|
|
|
m_Socket->async_read_some (boost::asio::buffer (m_Buffer, HTTP_CONNECTION_BUFFER_SIZE), |
|
|
@ -244,15 +239,15 @@ namespace http { |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::HandleReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred) |
|
|
|
void HTTPConnection::HandleReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!ecode) |
|
|
|
if (ecode) { |
|
|
|
{ |
|
|
|
if (ecode != boost::asio::error::operation_aborted) |
|
|
|
m_Buffer[bytes_transferred] = '\0'; |
|
|
|
Terminate (ecode); |
|
|
|
m_BufferLen = bytes_transferred; |
|
|
|
return; |
|
|
|
RunRequest(); |
|
|
|
|
|
|
|
Receive (); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else if (ecode != boost::asio::error::operation_aborted) |
|
|
|
m_Buffer[bytes_transferred] = '\0'; |
|
|
|
Terminate (); |
|
|
|
m_BufferLen = bytes_transferred; |
|
|
|
|
|
|
|
RunRequest(); |
|
|
|
|
|
|
|
Receive (); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::RunRequest () |
|
|
|
void HTTPConnection::RunRequest () |
|
|
@ -269,14 +264,13 @@ namespace http { |
|
|
|
HandleRequest (request.uri); |
|
|
|
HandleRequest (request.uri); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::HandleWriteReply (const boost::system::error_code& ecode) |
|
|
|
void HTTPConnection::Terminate (const boost::system::error_code& ecode) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (ecode != boost::asio::error::operation_aborted) |
|
|
|
if (ecode == boost::asio::error::operation_aborted) |
|
|
|
{ |
|
|
|
return; |
|
|
|
boost::system::error_code ignored_ec; |
|
|
|
boost::system::error_code ignored_ec; |
|
|
|
m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec); |
|
|
|
m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec); |
|
|
|
Terminate (); |
|
|
|
m_Socket->close (); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::HandleRequest (const std::string &uri) |
|
|
|
void HTTPConnection::HandleRequest (const std::string &uri) |
|
|
@ -767,7 +761,7 @@ namespace http { |
|
|
|
buffers.push_back(boost::asio::buffer(content)); |
|
|
|
buffers.push_back(boost::asio::buffer(content)); |
|
|
|
|
|
|
|
|
|
|
|
boost::asio::async_write (*m_Socket, buffers, |
|
|
|
boost::asio::async_write (*m_Socket, buffers, |
|
|
|
std::bind (&HTTPConnection::HandleWriteReply, shared_from_this (), std::placeholders::_1)); |
|
|
|
std::bind (&HTTPConnection::Terminate, shared_from_this (), std::placeholders::_1)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void HTTPConnection::SendError(const std::string& content) |
|
|
|
void HTTPConnection::SendError(const std::string& content) |
|
|
|