I2CP: Notes on destroy/disconnect
Some checks failed
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled

This commit is contained in:
zzz
2025-07-10 08:53:16 -04:00
parent 80972af6b3
commit 836cdb9cd0

View File

@ -3,7 +3,7 @@ I2CP Specification
================== ==================
.. meta:: .. meta::
:category: Protocols :category: Protocols
:lastupdated: 2025-06 :lastupdated: 2025-07
:accuratefor: 0.9.67 :accuratefor: 0.9.67
.. contents:: .. contents::
@ -785,7 +785,9 @@ Description
``````````` ```````````
This message is sent from a client to destroy a session. This message is sent from a client to destroy a session.
Sent from Client to Router. The router responds with a SessionStatusMessage_. Sent from Client to Router. The router should respond with a SessionStatusMessage_ (Destroyed).
However, see important notes below.
Contents Contents
```````` ````````
@ -795,6 +797,26 @@ Notes
````` `````
The router at this point should release all resources related to the session. The router at this point should release all resources related to the session.
Through API 0.9.66,
the Java I2P router and client libraries deviate substantially from this specification.
The router never sends a SessionStatus(Destroyed) response.
If no sessions are left, it sends a DisconnectMessage_.
If there are subsessions or the primary session is remaining, it does not reply.
The Java client library responds to a SessionStatus message by destroying
all sessions and reconnecting.
Destroying individual subsessions on a connection with multiple sessions
may not be fully tested or working on various router and client implementations.
Use caution.
Implementations should treat a destroy for a primary session as a destroy
for all subsessions, but allow a destroy for a single subsession
and keep the connection open, but Java I2P does not do that now.
If Java I2P behavior is changed in subsequent releases, it will be documented here.
.. _msg-Disconnect: .. _msg-Disconnect:
DisconnectMessage DisconnectMessage
@ -803,7 +825,8 @@ DisconnectMessage
Description Description
``````````` ```````````
Tell the other party that there are problems and the current connection is about to Tell the other party that there are problems and the current connection is about to
be destroyed. This does not necessarily end a session. be destroyed. This ends all sessions on that connection.
The socket will be closed shortly.
Sent either from router to client or from client to router. Sent either from router to client or from client to router.
Contents Contents
@ -812,8 +835,8 @@ Contents
Notes Notes
````` `````
Only implemented in the router-to-client direction. Disconnecting probably Only implemented in the router-to-client direction, at least in Java I2P.
does end a session, in practice.
.. _msg-GetBandwidthLimits: .. _msg-GetBandwidthLimits: