I remember reading that SoD has been plagued with a bug for a while that causes clients to become unable to cast spells or combat. We had a similar issue on EQEmu for a long time, but resolved it with a simple fix. Here is a link to the thread with the code fix and a brief explanation:
http://www.eqemulator.net/forums/showthread.php?t=25559
I am not sure if this is the cause of the issue on SoD, but some both projects are based on the same source originally, I wouldn't be surprised if you guys still had the problem shown in that thread. The basics of it is that when a server has heavy traffic, there is a chance that packets will come in out of order. Without the fix above, the out of order packets can cause the client to enter that bugged state where they eventually get disconnected.
Here is the actual code change from that thread for people who might not have a login to the EQEmu forums to view it:
EQStream.cpp
I thought someone here may have already seen this and put this fix in for SoD if it was needed, but just incase, I figured I should post it. I know I was extremely happy when this fix went in for EQEmu and it fixed the issue 100% for us. So, if it works for you guys as well, grats
http://www.eqemulator.net/forums/showthread.php?t=25559
I am not sure if this is the cause of the issue on SoD, but some both projects are based on the same source originally, I wouldn't be surprised if you guys still had the problem shown in that thread. The basics of it is that when a server has heavy traffic, there is a chance that packets will come in out of order. Without the fix above, the out of order packets can cause the client to enter that bugged state where they eventually get disconnected.
Here is the actual code change from that thread for people who might not have a login to the EQEmu forums to view it:
EQStream.cpp
Code:
--- EQEmu-0.7.0-1118/common/EQStream.cpp.orig 2008-06-25 16:50:09.000000000 +0000
+++ EQEmu-0.7.0-1118/common/EQStream.cpp 2008-06-25 16:50:47.000000000 +0000
@@ -178,6 +178,8 @@
_raw(NET__DEBUG, seq, p);
//kludge to see if it helps:
//SendAck(GetLastAckSent());
+
+ SendOutOfOrderAck(seq);
} else {
// In case we did queue one before as well.
EQProtocolPacket *qp=RemoveQueue(seq);
@@ -222,6 +224,8 @@
} else if (check == SeqPast) {
_log(NET__DEBUG, _L "Duplicate OP_Fragment: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq);
_raw(NET__DEBUG, seq, p);
+
+ SendOutOfOrderAck(seq);
} else {
// In case we did queue one before as well.
EQProtocolPacket *qp=RemoveQueue(seq);
I thought someone here may have already seen this and put this fix in for SoD if it was needed, but just incase, I figured I should post it. I know I was extremely happy when this fix went in for EQEmu and it fixed the issue 100% for us. So, if it works for you guys as well, grats