mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Implement the client side of optimistic data (proposal 174)
This commit is contained in:
parent
bb105ef1f6
commit
326d5c156d
@ -157,13 +157,22 @@ connection_edge_process_inbuf(edge_connection_t *conn, int package_partial)
|
|||||||
case EXIT_CONN_STATE_CONNECTING:
|
case EXIT_CONN_STATE_CONNECTING:
|
||||||
case AP_CONN_STATE_RENDDESC_WAIT:
|
case AP_CONN_STATE_RENDDESC_WAIT:
|
||||||
case AP_CONN_STATE_CIRCUIT_WAIT:
|
case AP_CONN_STATE_CIRCUIT_WAIT:
|
||||||
case AP_CONN_STATE_CONNECT_WAIT:
|
|
||||||
case AP_CONN_STATE_RESOLVE_WAIT:
|
case AP_CONN_STATE_RESOLVE_WAIT:
|
||||||
case AP_CONN_STATE_CONTROLLER_WAIT:
|
case AP_CONN_STATE_CONTROLLER_WAIT:
|
||||||
log_info(LD_EDGE,
|
log_info(LD_EDGE,
|
||||||
"data from edge while in '%s' state. Leaving it on buffer.",
|
"data from edge while in '%s' state. Leaving it on buffer.",
|
||||||
conn_state_to_string(conn->_base.type, conn->_base.state));
|
conn_state_to_string(conn->_base.type, conn->_base.state));
|
||||||
return 0;
|
return 0;
|
||||||
|
case AP_CONN_STATE_CONNECT_WAIT:
|
||||||
|
log_info(LD_EDGE,
|
||||||
|
"data from edge while in '%s' state. Sending it anyway. package_partial=%d, buflen=%d",
|
||||||
|
conn_state_to_string(conn->_base.type, conn->_base.state), package_partial, buf_datalen(TO_CONN(conn)->inbuf));
|
||||||
|
if (connection_edge_package_raw_inbuf(conn, package_partial, NULL) < 0) {
|
||||||
|
/* (We already sent an end cell if possible) */
|
||||||
|
connection_mark_for_close(TO_CONN(conn));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
log_warn(LD_BUG,"Got unexpected state %d. Closing.",conn->_base.state);
|
log_warn(LD_BUG,"Got unexpected state %d. Closing.",conn->_base.state);
|
||||||
tor_fragile_assert();
|
tor_fragile_assert();
|
||||||
@ -2395,6 +2404,13 @@ connection_ap_handshake_send_begin(edge_connection_t *ap_conn)
|
|||||||
log_info(LD_APP,"Address/port sent, ap socket %d, n_circ_id %d",
|
log_info(LD_APP,"Address/port sent, ap socket %d, n_circ_id %d",
|
||||||
ap_conn->_base.s, circ->_base.n_circ_id);
|
ap_conn->_base.s, circ->_base.n_circ_id);
|
||||||
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_CONNECT, 0);
|
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_CONNECT, 0);
|
||||||
|
|
||||||
|
/* If there's queued-up data, send it now */
|
||||||
|
log_warn(LD_APP, "Possibly sending queued-up data: %d", buf_datalen(TO_CONN(ap_conn)->inbuf));
|
||||||
|
if (connection_edge_package_raw_inbuf(ap_conn, 1, NULL) < 0) {
|
||||||
|
connection_mark_for_close(TO_CONN(ap_conn));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user