Short: Better buffering of data sent to players From: Gnomi Date: 2002-07-14 Type: Feature State: New Driver: 3.2.9-dev.440 If too much data is sent to the player over a slow connection, it can happen that the socket_write() consistently fails with EWOULDBLOCK (== EAGAIN under Linux). The driver then discards the message even if a few seconds later the transmission would succeed. Reason for this behaviour is that the buffer for text to send is of fixed size and has to be emptied. By making the buffer a FIFO (and extending the backend loop by a new call to some send_pending_data()) this problem could be solved. When implementing this, consider that the mudlib must be able to detect and shutdown continually starved connections before the buffers grow too big. Maybe a control efun set_max_buffer_size() for each interactive (with an 'unlimited' setting available). This might require calls to forcefully 'abandon' data from the mudlib, and an internal setting to let data expire once a certain buffer size is reached (set_buffer_mode(): BUF_LIMITED, BUF_UNLIMITED, BUF_FIFO).