- Add support for b64 conversion in destLookup()
  - Catch invalid message length sooner
I2Ping:
  - Extend I2PTunnelClientBase so non-shared-client,
    I2CP options, and other features will work
  - Fixes for fields and threading
Streaming:
  - Send LS with ping (broken since 0.9.2)
  - Set the NO_ACK flag on pings and pongs
This commit is contained in:
zzz
2013-12-21 18:10:59 +00:00
parent cc97a19d3c
commit 5219791673
9 changed files with 166 additions and 78 deletions

View File

@ -593,8 +593,9 @@ class ConnectionManager {
Long id = Long.valueOf(_context.random().nextLong(Packet.MAX_STREAM_ID-1)+1);
PacketLocal packet = new PacketLocal(_context, peer);
packet.setSendStreamId(id.longValue());
packet.setFlag(Packet.FLAG_ECHO);
packet.setFlag(Packet.FLAG_SIGNATURE_INCLUDED);
packet.setFlag(Packet.FLAG_ECHO |
Packet.FLAG_NO_ACK |
Packet.FLAG_SIGNATURE_INCLUDED);
packet.setOptionalFrom(_session.getMyDestination());
//if ( (keyToUse != null) && (tagsToSend != null) ) {
// packet.setKeyUsed(keyToUse);

View File

@ -295,8 +295,15 @@ class Packet {
*/
public boolean isFlagSet(int flag) { return 0 != (_flags & flag); }
/**
* @param flag bitmask of any flag(s)
*/
public void setFlag(int flag) { _flags |= flag; }
/**
* @param flag bitmask of any flag(s)
* @param set true to set, false to clear
*/
public void setFlag(int flag, boolean set) {
if (set)
_flags |= flag;
@ -304,7 +311,7 @@ class Packet {
_flags &= ~flag;
}
public void setFlags(int flags) { _flags = flags; }
private void setFlags(int flags) { _flags = flags; }
/** the signature on the packet (only included if the flag for it is set)
* @return signature on the packet if the flag for signatures is set

View File

@ -348,8 +348,7 @@ class PacketHandler {
}
} else {
PacketLocal pong = new PacketLocal(_context, packet.getOptionalFrom());
pong.setFlag(Packet.FLAG_ECHO, true);
pong.setFlag(Packet.FLAG_SIGNATURE_INCLUDED, false);
pong.setFlag(Packet.FLAG_ECHO | Packet.FLAG_NO_ACK);
pong.setReceiveStreamId(packet.getSendStreamId());
_manager.getPacketQueue().enqueue(pong);
}

View File

@ -109,7 +109,13 @@ class PacketQueue {
options.setTagsToSend(INITIAL_TAGS_TO_SEND);
options.setTagThreshold(MIN_TAG_THRESHOLD);
} else if (packet.isFlagSet(FLAGS_FINAL_TAGS)) {
options.setSendLeaseSet(false);
if (packet.isFlagSet(Packet.FLAG_ECHO)) {
// Send LS for PING, not for PONG
if (packet.getSendStreamId() <= 0) // pong
options.setSendLeaseSet(false);
} else {
options.setSendLeaseSet(false);
}
options.setTagsToSend(FINAL_TAGS_TO_SEND);
options.setTagThreshold(FINAL_TAG_THRESHOLD);
} else {