Stop being so strict about the payload length of "rendezvous1" cells

We used to be locked in to the "tap" handshake length, and now we can
handle better handshakes like "ntor".

Resolves ticket 18998.

I checked that relay_send_command_from_edge() behaves fine when you
hand it a payload with length 0. Clients behave fine too, since current
clients remain strict about the required length in the rendezvous2 cells.
(Clients will want to become less strict once they have an alternate
format that they're willing to receive.)
This commit is contained in:
Roger Dingledine 2016-05-09 20:34:27 -04:00
parent 6678dff386
commit be0e1e9e2f
2 changed files with 6 additions and 1 deletions

5
changes/feature18998 Normal file
View File

@ -0,0 +1,5 @@
o Minor features:
- Stop being so strict about the payload length of "rendezvous1"
cells. We used to be locked in to the "tap" handshake length,
and now we can handle better handshakes like "ntor". Resolves
ticket 18998.

View File

@ -309,7 +309,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
goto err;
}
if (request_len != REND_COOKIE_LEN+DH_KEY_LEN+DIGEST_LEN) {
if (request_len < REND_COOKIE_LEN) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting RENDEZVOUS1 cell with bad length (%d) on circuit %u.",
(int)request_len, (unsigned)circ->p_circ_id);