Skip to content

Commit 4feecdc

Browse files
committed
2 parents 67a9be0 + 3ac9fe2 commit 4feecdc

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

include/internal/DataStructures.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ namespace SL {
171171
unsigned char ReceiveHeader[14] = {};
172172
bool CompressionEnabled = false;
173173
SocketStatus SocketStatus_ = SocketStatus::CLOSED;
174+
bool Writing=false;
174175
OpCode LastOpCode = OpCode::INVALID;
175176
std::shared_ptr<PARENTTYPE> Parent;
176177
SOCKETTYPE Socket;

include/internal/WebSocketProtocol.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ namespace SL {
5656
}
5757
template<class PARENTTYPE, class SOCKETTYPE>inline void startwrite(const PARENTTYPE& parent, const SOCKETTYPE& socket) {
5858
if (!socket->SendMessageQueue.empty()) {
59+
socket->Writing = true;
5960
if(socket->SocketStatus_ == SocketStatus::CONNECTED){
6061
auto msg(socket->SendMessageQueue.front());
6162
write(parent, socket, msg.msg);
@@ -69,15 +70,16 @@ namespace SL {
6970
write(parent, socket, msg.msg);
7071
} else {
7172
socket->SendMessageQueue.pop_front();
73+
discardedcount+=1;
7274
}
73-
discardedcount+=1;
7475
}
75-
SL_WS_LITE_LOG(Logging_Levels::INFO_log_level, "discardedcount " <<discardedcount<< "remianing "<<socket->SendMessageQueue.size());
76+
SL_WS_LITE_LOG(Logging_Levels::INFO_log_level, "Sent Close message and discarded " <<discardedcount<< " other messages. Remaining messages "<<socket->SendMessageQueue.size());
7677
socket->SendMessageQueue.clear();//just in case
7778
}
7879

7980
}
8081
else {
82+
socket->Writing = false;
8183
writeexpire_from_now(parent, socket, std::chrono::seconds(0));// make sure the write timer doesnt kick off
8284
}
8385
}
@@ -94,7 +96,7 @@ namespace SL {
9496
socket->SocketStatus_ = SocketStatus::CLOSING;
9597
}
9698
socket->SendMessageQueue.emplace_back(SendQueueItem{ msg, compressmessage });
97-
if (socket->SendMessageQueue.size() == 1) {
99+
if (!socket->Writing) {
98100
SL::WS_LITE::startwrite(parent, socket);
99101
}
100102
}
@@ -126,6 +128,7 @@ namespace SL {
126128
}
127129

128130
template<class PARENTTYPE, class SOCKETTYPE, class SENDBUFFERTYPE>void closeImpl(const PARENTTYPE& parent, const SOCKETTYPE& socket, unsigned short code, const std::string& msg, const SENDBUFFERTYPE& networkmsg) {
131+
socket->Writing = false;
129132
if (networkmsg.code == OpCode::CLOSE) {
130133
//failed when sending a close message... get out and notify
131134
handleclose(parent, socket, networkmsg);

0 commit comments

Comments
 (0)