Merge branch '6-bytes-transferred'
This commit is contained in:
commit
fa3956f081
@ -41,7 +41,7 @@ namespace mumlib {
|
||||
|
||||
void sendTextMessage(std::string message);
|
||||
|
||||
void joinChannel(int channel_id);
|
||||
void joinChannel(int channelId);
|
||||
|
||||
private:
|
||||
_Mumlib_Private *impl;
|
||||
|
@ -179,7 +179,7 @@ namespace mumlib {
|
||||
string welcome_text,
|
||||
int32_t session,
|
||||
int32_t max_bandwidth,
|
||||
int64_t permissions);
|
||||
int64_t permissions) override;
|
||||
|
||||
virtual void channelRemove(uint32_t channel_id) override;
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
namespace mumlib {
|
||||
|
||||
constexpr int MAX_UDP_LENGTH = 1024;
|
||||
constexpr int MAX_TCP_LENGTH = 2048;
|
||||
constexpr int MAX_TCP_LENGTH = 129 * 1024; // 128 kB + some reserve
|
||||
|
||||
using namespace std;
|
||||
using namespace boost::asio;
|
||||
@ -85,8 +85,7 @@ namespace mumlib {
|
||||
|
||||
ssl::context sslContext;
|
||||
ssl::stream<tcp::socket> sslSocket;
|
||||
uint8_t sslIncomingBuffer[MAX_TCP_LENGTH];
|
||||
|
||||
uint8_t *sslIncomingBuffer;
|
||||
|
||||
deadline_timer pingTimer;
|
||||
std::chrono::time_point<std::chrono::system_clock> lastReceivedUdpPacketTimestamp;
|
||||
|
@ -42,11 +42,14 @@ mumlib::Transport::Transport(
|
||||
pingTimer(ioService, PING_INTERVAL),
|
||||
asyncBufferPool(max(MAX_UDP_LENGTH, MAX_TCP_LENGTH)) {
|
||||
|
||||
sslIncomingBuffer = new uint8_t[MAX_TCP_LENGTH];
|
||||
|
||||
pingTimer.async_wait(boost::bind(&Transport::pingTimerTick, this, _1));
|
||||
}
|
||||
|
||||
mumlib::Transport::~Transport() {
|
||||
disconnect();
|
||||
delete[] sslIncomingBuffer;
|
||||
}
|
||||
|
||||
void mumlib::Transport::connect(
|
||||
@ -292,9 +295,16 @@ void mumlib::Transport::doReceiveSsl() {
|
||||
}
|
||||
|
||||
const int payloadSize = ntohl(*reinterpret_cast<uint32_t *>(sslIncomingBuffer + 2));
|
||||
size_t remaining = payloadSize + 6 - bytesTransferred;
|
||||
const int wholeMessageLength = payloadSize + 6;
|
||||
size_t remaining = wholeMessageLength - bytesTransferred;
|
||||
remaining = max(remaining, (size_t) 0);
|
||||
|
||||
if (wholeMessageLength > MAX_TCP_LENGTH) {
|
||||
throwTransportException(
|
||||
(boost::format("message bigger (%d B) than max allowed size (%d B)")
|
||||
% wholeMessageLength % MAX_TCP_LENGTH).str());
|
||||
}
|
||||
|
||||
return remaining;
|
||||
},
|
||||
[this](const boost::system::error_code &ec, size_t bytesTransferred) {
|
||||
@ -314,7 +324,8 @@ void mumlib::Transport::doReceiveSsl() {
|
||||
} else {
|
||||
logger.error("SSL receiver error: %s. Bytes transferred: %d.",
|
||||
ec.message().c_str(), bytesTransferred);
|
||||
throwTransportException("receive failed: " + ec.message());
|
||||
//todo temporarily disable exception throwing until issue #6 is solved
|
||||
//throwTransportException("receive failed: " + ec.message());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -386,9 +386,10 @@ namespace mumlib {
|
||||
impl->transport.sendControlMessage(MessageType::TEXTMESSAGE, textMessage);
|
||||
}
|
||||
|
||||
void Mumlib::joinChannel(int channel_id) {
|
||||
void Mumlib::joinChannel(int channelId) {
|
||||
MumbleProto::UserState userState;
|
||||
userState.set_channel_id(channel_id);
|
||||
userState.set_channel_id(channelId);
|
||||
impl->transport.sendControlMessage(MessageType::USERSTATE, userState);
|
||||
impl->channelId = channelId;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user