The one in connection_or.c was crucial: it's the
thing that made OR negotiation actually work.
The one in channeltls.c was just defensive programming, but it's
valid defensive programming: by the time we enter from
channel_handle_var_cell, channel_tls_process_vesions_cell,
we have changed our state via enter_v3_handshake_with_cell.
case OR_CONN_STATE_OR_HANDSHAKING_V3:
break;
case OR_CONN_STATE_TLS_HANDSHAKING:
+ case OR_CONN_STATE_SERVER_VERSIONS_WAIT:
default:
log_fn(LOG_PROTOCOL_WARN, LD_OR,
"VERSIONS cell while in unexpected state");
return ret;
case OR_CONN_STATE_OPEN:
+ case OR_CONN_STATE_SERVER_VERSIONS_WAIT:
case OR_CONN_STATE_OR_HANDSHAKING_V3:
return connection_or_process_cells_from_inbuf(conn);
default: