briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-10-26T11:58:49Zhttps://code.briarproject.org/briar/briar/-/issues/1374Implement StreamWriter/Reader writeTag and readTag methods2020-10-26T11:58:49ZBen WieImplement StreamWriter/Reader writeTag and readTag methodsThe current implementation of the `StreamWriter`/`StreamEncrypter` write a tag, which allows the recipient to identify the connection. This tag is written automatically when the first message is written (or the stream is flushed).
Writi...The current implementation of the `StreamWriter`/`StreamEncrypter` write a tag, which allows the recipient to identify the connection. This tag is written automatically when the first message is written (or the stream is flushed).
Writing this tag explicitly before sending any message simplifies the implementation of mailbox session management. A public `writeTag` method should be added to the 'StreamWriter'/'StreamEncrypter'.
Additionally, the `readTag` method, which is currently part of the `ConnectionManager`, is also required to manage mailbox connections. To avoid redundancy we could add a StreamReader interface and implement a `readTag` function ('StreamReader' currently extends an `InputStream`).
As @akwizgran suggested, a workaround is to simply flush the `StreamWriter`, but this also writes an empty frame.Mailbox Prototypehttps://code.briarproject.org/briar/briar/-/issues/1322Multiplexer for mailbox uploads2020-10-26T11:56:13ZakwizgranMultiplexer for mailbox uploadsA connection from a mailbox's owner to the mailbox may carry multiple uploads in parallel - one containing sync records from the owner to the mailbox, and one per contact containing an encrypted stream to be downloaded by the contact.
I...A connection from a mailbox's owner to the mailbox may carry multiple uploads in parallel - one containing sync records from the owner to the mailbox, and one per contact containing an encrypted stream to be downloaded by the contact.
Implement a protocol for multiplexing these uploads over a single connection.Mailbox Prototypehttps://code.briarproject.org/briar/briar/-/issues/1323Demultiplexer for mailbox downloads2020-10-26T11:55:49ZakwizgranDemultiplexer for mailbox downloadsA connection from a mailbox's owner to the mailbox may carry multiple downloads in parallel - one containing sync records from the mailbox to the owner, and one per contact containing an encrypted stream uploaded by the contact.
Impleme...A connection from a mailbox's owner to the mailbox may carry multiple downloads in parallel - one containing sync records from the mailbox to the owner, and one per contact containing an encrypted stream uploaded by the contact.
Implement a component that demultiplexes these downloads.Mailbox Prototypehttps://code.briarproject.org/briar/briar/-/issues/541Allow retransmission if it will result in faster delivery2018-09-18T17:04:01ZakwizgranAllow retransmission if it will result in faster deliveryEach time a message is sent to a contact, the message's send time is updated based on the maximum latency of the transport, and the message cannot be sent to the contact again until the send time is reached. This prevents messages from b...Each time a message is sent to a contact, the message's send time is updated based on the maximum latency of the transport, and the message cannot be sent to the contact again until the send time is reached. This prevents messages from being retransmitted unnecessarily while they're still in transit. However, if a message is in transit over a high-latency transport, it may be desirable to allow it to be retransmitted over a low-latency transport to allow faster delivery.
Instead of comparing the send time to the current time, it should be compared to the expected delivery time over the current transport. The current time plus the maximum latency of the current transport can be used as a first estimate of the expected delivery time; we can get clever with round-trip time measurements later.Mailbox PrototypeJulian DehmJulian Dehm