The following patches have been applied, submitted to CVS as noted:
- Frequent crashes after client disconnects
After a client disconnected, the server would frequently generate
SIGPIPE, and wouldn't be trapped. Further analysis
showed that the function SockList_ReadPacket() in the
file lowlevel.c did not check for ECONNRESET as a
possible result from ReadPacket() on non-Windows
platforms. Adding code that checks for this condition and then closes
the socket fixed this problem. Applied to CVS 2006-09-02
- Random crashes when entering a randomly generated map
The function surround_flag3() in wall.c generated
SIGSEGV as a result of out-of-bounds on the
spaces[] array of the map struct. To resolve this,
boundry checking is now performed within the function. Out-of-bounds
parameters now cause 0 to be returned. Additionally, the
i and j parameters were changed from type
sint16 to type int. This matches the types
passed to the parent function find_enclosed_spot() in
treasure.c. Applied to CVS 2006-09-04
The server runs in DEBUG mode so that good traces are (usually) generated.