Login
User Name:

Password:



Register

Forgot your password?
 sting skill
Jan 7, 2025 7:32 pm
By Remcon
 south command
Jan 7, 2025 7:22 pm
By Remcon
 mphate
Jan 7, 2025 7:16 pm
By Remcon
 do_setliquid
Jan 7, 2025 3:22 pm
By Remcon
Array overrun and incorrect string macros used in do_setclass
Jan 7, 2025 3:20 am
By Samson
Help.are for SmaugFUSS1.9.5
Author: Smaug
Submitted by: Remcon
LOP 1.6
Author: Remcon
Submitted by: Remcon
SWFOTEFUSS 1.5.1
Author: Various
Submitted by: Samson
SWRFUSS 1.4.1
Author: Various
Submitted by: Samson
SmaugFUSS 1.9.5
Author: Various
Submitted by: Samson
Users Online
Anthropic, Bytespider, Yandex, Meta, DotBot

Members: 0
Guests: 11
Stats
Files
Topics
Posts
Members
Newest Member
495
3,819
19,758
589
ReubenKeat

» SmaugMuds » Bugfix Lists » AFKMud Bugfix List » [Bug] compressEnd does not fr...
Forum Rules | Mark all | Recent Posts

[Bug] compressEnd does not free up the MCCP buffer if data fails to send.
< Newer Topic :: Older Topic > AFKMud 2.1.3

Pages:<< prev 1 next >>
Post is unread #1 Mar 8, 2010 1:46 am   
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,713
JoinedJan 1, 2002

 
Bug: compressEnd does not free up the MCCP buffer if data fails to send.
Danger: Medium - If you have a lot of people using MCCP disconnecting regularly and not able to receive data, it leaks 4096 bytes every time that happens.
Discovered in: AFKMud 2.1.3
Found by: Nick Gammon
Fixed by: Nick Gammon

---

features.cpp, descriptor_data::compressEnd

Locate:
   if( deflate( mccp->out_compress, Z_FINISH ) != Z_STREAM_END )
      return false;

   if( !process_compressed(  ) ) /* try to send any residual data */
      return false;


Change to:
   if( deflate( mccp->out_compress, Z_FINISH ) == Z_STREAM_END )
      process_compressed();   /* try to send any residual data */


As explained by Nick, if data can't be written to the descriptor when shutting down compression, a chunk of 4096 bytes will be left leaking.

Enough players doing this by disconnecting and reconnecting a lot can lead to substantial memory loss and lead to the need for premature reboots.

Pages:<< prev 1 next >>