mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-13 23:44:40 +00:00
disable resetting of sequence num to 0
This commit is contained in:
parent
5c15a8a3cf
commit
65973fee8b
1 changed files with 26 additions and 13 deletions
|
|
@ -193,10 +193,8 @@ class MiddlewareActor(
|
||||||
/** Queue of outgoing packets ready for sending */
|
/** Queue of outgoing packets ready for sending */
|
||||||
val outQueueBundled: mutable.Queue[PlanetSidePacket] = mutable.Queue()
|
val outQueueBundled: mutable.Queue[PlanetSidePacket] = mutable.Queue()
|
||||||
|
|
||||||
/** Latest outbound sequence number;
|
/** Latest outbound sequence number */
|
||||||
* the current sequence is one less than this number
|
var outSequence = -1
|
||||||
*/
|
|
||||||
var outSequence = 0
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increment the outbound sequence number.
|
* Increment the outbound sequence number.
|
||||||
|
|
@ -205,13 +203,18 @@ class MiddlewareActor(
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
def nextSequence: Int = {
|
def nextSequence: Int = {
|
||||||
val r = outSequence
|
if (outSequence >= 0xffff) {
|
||||||
if (outSequence == 0xffff) {
|
// TODO resetting the sequence to 0 causes a client crash
|
||||||
outSequence = 0
|
// but that does not happen when we always send the same number
|
||||||
} else {
|
// the solution is most likely to send the proper ResetSequence payload
|
||||||
outSequence += 1
|
// send(ResetSequence(), None, crypto)
|
||||||
|
|
||||||
|
// outSequence = -1
|
||||||
|
// return nextSequence
|
||||||
|
return outSequence
|
||||||
}
|
}
|
||||||
r
|
outSequence += 1
|
||||||
|
outSequence
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Latest outbound subslot number;
|
/** Latest outbound subslot number;
|
||||||
|
|
@ -454,6 +457,11 @@ class MiddlewareActor(
|
||||||
case Successful((packet, Some(sequence))) =>
|
case Successful((packet, Some(sequence))) =>
|
||||||
activeSequenceFunc(packet, sequence)
|
activeSequenceFunc(packet, sequence)
|
||||||
case Successful((packet, None)) =>
|
case Successful((packet, None)) =>
|
||||||
|
packet match {
|
||||||
|
case _: PlanetSideResetSequencePacket =>
|
||||||
|
log.info(s"ResetSequence: ${msg}, inSeq: ${inSequence}, outSeq: ${outSequence}")
|
||||||
|
case _ => ()
|
||||||
|
}
|
||||||
in(packet)
|
in(packet)
|
||||||
case Failure(e) =>
|
case Failure(e) =>
|
||||||
log.error(s"Could not decode $connectionId's packet: $e")
|
log.error(s"Could not decode $connectionId's packet: $e")
|
||||||
|
|
@ -569,9 +577,14 @@ class MiddlewareActor(
|
||||||
log.error(s"Unexpected crypto packet '$packet'")
|
log.error(s"Unexpected crypto packet '$packet'")
|
||||||
Behaviors.same
|
Behaviors.same
|
||||||
|
|
||||||
case _: PlanetSideResetSequencePacket =>
|
case packet: PlanetSideResetSequencePacket =>
|
||||||
log.debug("Received sequence reset request from client; complying")
|
// TODO This is wrong
|
||||||
outSequence = 0
|
// I suspect ResetSequence is a notification that the remote sequence has been reset
|
||||||
|
// rather than a request to reset our outgoing sequence number
|
||||||
|
// Resetting it this way causes a client crash, see nextSequence
|
||||||
|
|
||||||
|
// log.debug(s"Received sequence reset request from client: $packet.}")
|
||||||
|
// outSequence = 0
|
||||||
Behaviors.same
|
Behaviors.same
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue