@@ -10,6 +10,11 @@ class NetServer {
1010private:
1111 static unsigned char net_server_write[SIZE_NETWORK_BUFFER ];
1212 static size_t last_sent;
13+ static bufferevent* disconnecting_bev;
14+
15+ static bool CanWriteToPlayer (DuelPlayer* dp) {
16+ return dp && dp->bev && dp->bev != disconnecting_bev;
17+ }
1318
1419public:
1520 static bool StartServer (unsigned short port);
@@ -42,7 +47,7 @@ class NetServer {
4247 BufferIO::Write<uint16_t >(p, 1 );
4348 BufferIO::Write<uint8_t >(p, proto);
4449 last_sent = 3 ;
45- if (dp )
50+ if (CanWriteToPlayer (dp) )
4651 bufferevent_write (dp->bev , net_server_write, 3 );
4752 }
4853 template <typename ST >
@@ -53,7 +58,7 @@ class NetServer {
5358 BufferIO::Write<uint8_t >(p, proto);
5459 std::memcpy (p, &st, sizeof (ST ));
5560 last_sent = sizeof (ST ) + 3 ;
56- if (dp )
61+ if (CanWriteToPlayer (dp) )
5762 bufferevent_write (dp->bev , net_server_write, sizeof (ST ) + 3 );
5863 }
5964 static void SendBufferToPlayer (DuelPlayer* dp, unsigned char proto, void * buffer, size_t len) {
@@ -64,11 +69,11 @@ class NetServer {
6469 BufferIO::Write<uint8_t >(p, proto);
6570 std::memcpy (p, buffer, len);
6671 last_sent = len + 3 ;
67- if (dp )
72+ if (CanWriteToPlayer (dp) )
6873 bufferevent_write (dp->bev , net_server_write, len + 3 );
6974 }
7075 static void ReSendToPlayer (DuelPlayer* dp) {
71- if (dp )
76+ if ( CanWriteToPlayer (dp) )
7277 bufferevent_write (dp->bev , net_server_write, last_sent);
7378 }
7479};
0 commit comments