summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/common/socket.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 5a84d311f..510dd9467 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/12/28
+ * Added a func_parse invocation when an invalid socket is found, so that
+ the underlying code (char/map/login) can handle it and free any related
+ resources.
* Added some skill effect packets so it displays a generic effect for
unknown targetted skills.
* Some cleaning in do_sendrecv, added error messages when handling an
diff --git a/src/common/socket.c b/src/common/socket.c
index c8fe7aa1c..0bcc979da 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -646,6 +646,10 @@ int do_sendrecv(int next)
if(h_errno == EBADF) //See the #defines at the top
{
ShowError("Deleting invalid session %d\n", i);
+ //So the code can react accordingly
+ session[i]->eof = 1;
+ if(session[i]->func_parse)
+ session[i]->func_parse(i);
free_session_mem(i); //free the bad session
continue;
}