stcp: unified recv FSM, handshake timeout, RX backpressure, opaque pointer fix
- stcp_recv_try / stcp_recv_set: unified chunk reader with raw+stream modes replacing duplicated stcp_conn_process_recv in server+client (~250 LOC removed) - stcp_conn_read / stcp_conn_do_close / stcp_tx_queue_cb: unified shared functions - continuous stream XOR: stcp_frame_encrypt now XORs len+data+CRC - handshake timeout via uasync_set_timeout (5s server, 10s client) - RX backpressure: stcp_rx_push / stcp_rx_resume_if_needed with hysteresis - stcp_server_list_remove: new API fixes opaque pointer violation in auto_socket and 4 double-free bugs on shutdown - removed hs_expected_len/hs_key_processed fields (replaced by callback chain) - removed recv_buf<4096 debug workaround - stcp_try_send const fix (takes ownership of malloc'd data)
This commit is contained in:
1 parent
d453e73ddb
commit
5c8355ee63
8 files changed
+337
-292
No files matched your search
@@ -48,6 +48,7 @@ static void peer_rx_cb(struct ll_queue *q, void *arg) {
|
||||
p->accum_len += e->len;
|
||||
queue_entry_free(e);
|
||||
queue_resume_callback(q);
|
||||
if (p->conn) stcp_rx_resume_if_needed(p->conn);
|
||||
}
|
||||
|
||||
static void peer_close_cb(struct stcp_conn *conn, int err, void *arg) {
|
||||
@@ -60,6 +61,7 @@ static void setup_peer(struct test_peer *p, struct stcp_conn *conn) {
|
||||
p->conn = conn;
|
||||
p->rx = queue_new(conn->ua, 0, 0, 0, "rx");
|
||||
p->tx = queue_new(conn->ua, 0, 0, 0, "tx");
|
||||
queue_set_threshold(p->rx, STCP_RX_QUEUE_MAX_PACKETS, STCP_RX_QUEUE_MAX_BYTES);
|
||||
queue_set_callback(p->rx, peer_rx_cb, p);
|
||||
stcp_conn_set_rx_queue(conn, p->rx);
|
||||
stcp_conn_set_tx_queue(conn, p->tx);
|
||||
|
||||
Reference in new issue
Block a user