|
|
@ -14,6 +14,7 @@ |
|
|
|
#include "Timestamp.h" |
|
|
|
#include "Timestamp.h" |
|
|
|
#include "LeaseSet.h" |
|
|
|
#include "LeaseSet.h" |
|
|
|
#include "ClientContext.h" |
|
|
|
#include "ClientContext.h" |
|
|
|
|
|
|
|
#include "Transports.h" |
|
|
|
#include "I2CP.h" |
|
|
|
#include "I2CP.h" |
|
|
|
|
|
|
|
|
|
|
|
namespace i2p |
|
|
|
namespace i2p |
|
|
@ -241,7 +242,7 @@ namespace client |
|
|
|
{ |
|
|
|
{ |
|
|
|
uint8_t l = buf[0]; |
|
|
|
uint8_t l = buf[0]; |
|
|
|
if (l > len) l = len; |
|
|
|
if (l > len) l = len; |
|
|
|
return std::string ((const char *)buf, l); |
|
|
|
return std::string ((const char *)(buf + 1), l); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t I2CPSession::PutString (uint8_t * buf, size_t len, const std::string& str) |
|
|
|
size_t I2CPSession::PutString (uint8_t * buf, size_t len, const std::string& str) |
|
|
@ -502,6 +503,15 @@ namespace client |
|
|
|
SendI2CPMessage (I2CP_DEST_REPLY_MESSAGE, buf, 32); |
|
|
|
SendI2CPMessage (I2CP_DEST_REPLY_MESSAGE, buf, 32); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void I2CPSession::GetBandwidthLimitsMessageHandler (const uint8_t * buf, size_t len) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
uint8_t limits[64]; |
|
|
|
|
|
|
|
memset (limits, 0, 64); |
|
|
|
|
|
|
|
htobe32buf (limits, i2p::transport::transports.GetInBandwidth ()); // inbound
|
|
|
|
|
|
|
|
htobe32buf (limits + 4, i2p::transport::transports.GetOutBandwidth ()); // outbound
|
|
|
|
|
|
|
|
SendI2CPMessage (I2CP_BANDWIDTH_LIMITS_MESSAGE, limits, 64); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void I2CPSession::SendMessagePayloadMessage (const uint8_t * payload, size_t len) |
|
|
|
void I2CPSession::SendMessagePayloadMessage (const uint8_t * payload, size_t len) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// we don't use SendI2CPMessage to eliminate additional copy
|
|
|
|
// we don't use SendI2CPMessage to eliminate additional copy
|
|
|
@ -531,6 +541,7 @@ namespace client |
|
|
|
m_MessagesHandlers[I2CP_SEND_MESSAGE_EXPIRES_MESSAGE] = &I2CPSession::SendMessageExpiresMessageHandler; |
|
|
|
m_MessagesHandlers[I2CP_SEND_MESSAGE_EXPIRES_MESSAGE] = &I2CPSession::SendMessageExpiresMessageHandler; |
|
|
|
m_MessagesHandlers[I2CP_HOST_LOOKUP_MESSAGE] = &I2CPSession::HostLookupMessageHandler; |
|
|
|
m_MessagesHandlers[I2CP_HOST_LOOKUP_MESSAGE] = &I2CPSession::HostLookupMessageHandler; |
|
|
|
m_MessagesHandlers[I2CP_DEST_LOOKUP_MESSAGE] = &I2CPSession::DestLookupMessageHandler; |
|
|
|
m_MessagesHandlers[I2CP_DEST_LOOKUP_MESSAGE] = &I2CPSession::DestLookupMessageHandler; |
|
|
|
|
|
|
|
m_MessagesHandlers[I2CP_GET_BANDWIDTH_LIMITS_MESSAGE] = &I2CPSession::GetBandwidthLimitsMessageHandler; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
I2CPServer::~I2CPServer () |
|
|
|
I2CPServer::~I2CPServer () |
|
|
|