forked from I2P_Developers/i2p.i2p
I2CP: Synch fixes
Synch fields in the data messages both directions, after one report of zero session ID in MessagePayloadMessage to an external client on fast hardware with Java 18. Add new constructors for efficiency. Deprecated setters, unit tests not changed, TODO. Should fix all the other messages also, TODO.
This commit is contained in:
@@ -512,10 +512,6 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
|
||||
if (_runner.isDead()) return;
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Handling receive begin: id = " + message.getMessageId());
|
||||
MessagePayloadMessage msg = new MessagePayloadMessage();
|
||||
msg.setMessageId(message.getMessageId());
|
||||
// TODO validate session id
|
||||
msg.setSessionId(message.getSessionId());
|
||||
Payload payload = _runner.getPayload(new MessageId(message.getMessageId()));
|
||||
if (payload == null) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
@@ -523,7 +519,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
|
||||
+ "] is null! Dropped or Unknown message id");
|
||||
return;
|
||||
}
|
||||
msg.setPayload(payload);
|
||||
// TODO validate session id
|
||||
MessagePayloadMessage msg = new MessagePayloadMessage(message.getSessionId(), message.getMessageId(), payload);
|
||||
try {
|
||||
_runner.doSend(msg);
|
||||
} catch (I2CPMessageException ime) {
|
||||
|
||||
@@ -110,16 +110,13 @@ class MessageReceivedJob extends JobImpl {
|
||||
* @since 0.9.4
|
||||
*/
|
||||
private void sendMessage(long id) throws I2CPMessageException {
|
||||
MessagePayloadMessage msg = new MessagePayloadMessage();
|
||||
msg.setMessageId(id);
|
||||
SessionId sid = _runner.getSessionId(_toDest.calculateHash());
|
||||
if (sid == null) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("No session for " + _toDest.toBase32());
|
||||
return;
|
||||
}
|
||||
msg.setSessionId(sid.getSessionId());
|
||||
msg.setPayload(_payload);
|
||||
MessagePayloadMessage msg = new MessagePayloadMessage(sid.getSessionId(), id, _payload);
|
||||
_runner.doSend(msg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user