ScotchTape
03-20-2002, 02:59 AM
I'm finding that the world server is disconnecting the client, which then alerts the zone server, and soon I'm like bad tape: curled, mangled, and finally let go.
I'm just assuming that someone else has seen this problem too.
Right before the release, the client sends up to the server the opcode to player save (not the profile save), then sends out a scattering of unknowns (0x442 I think). While hunting through the code base, it looks like the problem lies somewhere in the process() thread for the client.
For a while I thought there was a bug in AddHateToNPC()*, but I've since removed that and things run a little smoother, but the problem is still there (world server disconnect because). It isn't from a client timeout, either, as the world server detects that the client is no long active (see Packet_Manager.CheckActive()).
Back in the zone server, Client::Process(), I'm finding that I remain active for a long time -- even after the world server disconnects me. This leads me to believe that there is a segment somewhere that I'm missing, but I'm not sure what. I've scoured the world source, and the only thing I can figure is that the world server just stops responding to the client, and I'm assuming it's connected with how the zone server is processing ::Process(), but I admit that I'm just reaching here.
* AddHateToNPC() I think could use some tweaking. In that bulk of code is an else, translates to (!Npc->IsEngaged()), that is being called whenever an NPC is not engaged. Someone has a comment in there to the effect of //heal buddy or some such, and well I'm telling you, that by default all NPCs are not engaged, so I wouldn't think that to be a good idea to put anything in there. I'm also trying to figure out, maybe someone could enlighten me, as to why AddHateToNPC() is being called at the char select screen and even after the client has disconnected up until zone sleep?
TIA
-ST
I'm just assuming that someone else has seen this problem too.
Right before the release, the client sends up to the server the opcode to player save (not the profile save), then sends out a scattering of unknowns (0x442 I think). While hunting through the code base, it looks like the problem lies somewhere in the process() thread for the client.
For a while I thought there was a bug in AddHateToNPC()*, but I've since removed that and things run a little smoother, but the problem is still there (world server disconnect because). It isn't from a client timeout, either, as the world server detects that the client is no long active (see Packet_Manager.CheckActive()).
Back in the zone server, Client::Process(), I'm finding that I remain active for a long time -- even after the world server disconnects me. This leads me to believe that there is a segment somewhere that I'm missing, but I'm not sure what. I've scoured the world source, and the only thing I can figure is that the world server just stops responding to the client, and I'm assuming it's connected with how the zone server is processing ::Process(), but I admit that I'm just reaching here.
* AddHateToNPC() I think could use some tweaking. In that bulk of code is an else, translates to (!Npc->IsEngaged()), that is being called whenever an NPC is not engaged. Someone has a comment in there to the effect of //heal buddy or some such, and well I'm telling you, that by default all NPCs are not engaged, so I wouldn't think that to be a good idea to put anything in there. I'm also trying to figure out, maybe someone could enlighten me, as to why AddHateToNPC() is being called at the char select screen and even after the client has disconnected up until zone sleep?
TIA
-ST