hello, i recently added grahams single threaded tutorial into my server, it was working for almost a week, i dont recall adding anything into IOClient which could harm it, its not a compile error, just a run error:
EDIT: Fixed, im 80% sure i was being SYI'd.
EDIT2: i dont even have to login to recieve this connection, is it possibly SYI/AGF?
Code:
Loaded WorldMap In (164 ms)...
Starting server on 0.0.0.0:43594
ClientHandler: Accepted from BSN-142-51-224.dial-up.dsl.siol.net:2504
Expect login byte 14 from client. loginbyte: 19
Loaded NPC's in: (348 ms)...
ClientHandler: Accepted from 81.165.77-86.rev.gaoland.net:57334
Expect login byte 14 from client. loginbyte: 50
ClientHandler: Accepted from 67.239.216.173:24111
Expect login byte 14 from client. loginbyte: 221
ClientHandler: Accepted from 41.221.66.16:56859
ClientHandler: Accepted from alphard.terminus.pl:59362
Expect login byte 14 from client. loginbyte: 19
Expect login byte 14 from client. loginbyte: 19
ClientHandler: Accepted from 92.65.145.49:2434
Expect login byte 14 from client. loginbyte: 85
ClientHandler: Accepted from 213.174.157.1:51905
ClientHandler: Accepted from adsl-69-154-8-145.dsl.austtx.swbell.net:4236
ClientHandler: Accepted from j162031.upc-j.chello.nl:57925
Expect login byte 14 from client. loginbyte: 19
Expect login byte 14 from client. loginbyte: 20
Timeout.
keeps doing that.
here's my start state:
Code:
if(state == State.LOGIN_START) {
if(fillinStream(2)) {
int loginByte = inStream.readUnsignedByte();
if(loginByte != 14) {
throw new Exception("Expect login byte 14 from client. login Byte: "+loginByte);
}
// this is part of the usename. Maybe it's used as a hash to select the appropriate
// login server
@SuppressWarnings("unused")
int namePart = inStream.readUnsignedByte();
for(int i = 0; i < 8; i++) out.write(0); // is being ignored by the client
// login response - 0 means exchange session key to establish encryption
// Note that we could use 2 right away to skip the cryption part, but i think this
// won't work in one case when the cryptor class is not set and will throw a NullPointerException
out.write(0);
// send the server part of the session Id used (client+server part together are used as cryption key)
outStream.writeQWord(serverSessionKey);
directFlushoutStream();
state = State.LOGIN_READ1;
}
}
this thread is mostly aimed at graham, because its his tutorial.
extra info: i added rog3rs ipanel, maybe that sends the wrong loginbyte?
EDIT: completely removed iPanel, still have the problem.