Compare commits

...

6 Commits

4 changed files with 12 additions and 7 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.7)
project(libdatachannel
VERSION 0.11.5
VERSION 0.11.7
LANGUAGES CXX)
set(PROJECT_DESCRIPTION "WebRTC Data Channels Library")

View File

@ -533,13 +533,16 @@ void SctpTransport::updateBufferedAmount(uint16_t streamId, long delta) {
else
it->second = amount;
mSendMutex.unlock();
// Synchronously call the buffered amount callback
triggerBufferedAmount(streamId, amount);
}
void SctpTransport::triggerBufferedAmount(uint16_t streamId, size_t amount) {
try {
mBufferedAmountCallback(streamId, amount);
} catch (const std::exception &e) {
PLOG_DEBUG << "SCTP buffered amount callback: " << e.what();
PLOG_WARNING << "SCTP buffered amount callback: " << e.what();
}
mSendMutex.lock();
}
void SctpTransport::sendReset(uint16_t streamId) {

View File

@ -83,6 +83,7 @@ private:
bool trySendQueue();
bool trySendMessage(message_ptr message);
void updateBufferedAmount(uint16_t streamId, long delta);
void triggerBufferedAmount(uint16_t streamId, size_t amount);
void sendReset(uint16_t streamId);
bool safeFlush();
@ -97,7 +98,8 @@ private:
Processor mProcessor;
std::atomic<int> mPendingRecvCount;
std::mutex mRecvMutex, mSendMutex;
std::mutex mRecvMutex;
std::recursive_mutex mSendMutex; // buffered amount callback is synchronous
Queue<message_ptr> mSendQueue;
std::map<uint16_t, size_t> mBufferedAmount;
amount_callback mBufferedAmountCallback;

View File

@ -114,7 +114,7 @@ bool Track::isOpen(void) const {
bool Track::isClosed(void) const { return mIsClosed; }
size_t Track::maxMessageSize() const {
return 65535 - 12 - 4; // SRTP/UDP
return DEFAULT_IPV4_MTU - 12 - 8 - 20; // SRTP/UDP/IPv4
}
size_t Track::availableAmount() const { return mRecvQueue.amount(); }
@ -158,7 +158,7 @@ void Track::incoming(message_ptr message) {
}
bool Track::outgoing([[maybe_unused]] message_ptr message) {
#if RTC_ENABLfiE_MEDIA
#if RTC_ENABLE_MEDIA
std::shared_ptr<DtlsSrtpTransport> transport;
{
std::shared_lock lock(mMutex);