Changeset d9e14fa4 in mainline for uspace/srv/net/tl/tcp/conn.c
- Timestamp:
- 2011-12-09T16:06:28Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 03be171
- Parents:
- 0ac2158
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tl/tcp/conn.c
r0ac2158 rd9e14fa4 117 117 118 118 conn->cstate = st_listen; 119 conn->reset = false; 120 conn->ap = ap_passive; 119 121 conn->fin_is_acked = false; 120 122 conn->ident.local = *lsock; … … 176 178 conn->snd_nxt = conn->iss; 177 179 conn->snd_una = conn->iss; 180 conn->ap = ap_active; 178 181 179 182 tcp_tqueue_ctrl_seg(conn, CTL_SYN); … … 278 281 log_msg(LVL_DEBUG, "%s: tcp_conn_reset()", conn->name); 279 282 tcp_conn_state_set(conn, st_closed); 283 conn->reset = true; 284 280 285 tcp_conn_tw_timer_clear(conn); 281 286 tcp_tqueue_clear(&conn->retransmit); 287 288 fibril_condvar_broadcast(&conn->rcv_buf_cv); 289 } 290 291 /** Signal to the user that connection has been reset. 292 * 293 * Send an out-of-band signal to the user. 294 */ 295 static void tcp_reset_signal(tcp_conn_t *conn) 296 { 297 /* TODO */ 298 log_msg(LVL_DEBUG, "%s: tcp_reset_signal()", conn->name); 282 299 } 283 300 … … 485 502 static cproc_t tcp_conn_seg_proc_rst(tcp_conn_t *conn, tcp_segment_t *seg) 486 503 { 487 /* TODO */ 488 return cp_continue; 504 switch (conn->cstate) { 505 case st_syn_received: 506 /* XXX In case of passive open, revert to Listen state */ 507 if (conn->ap == ap_passive) { 508 tcp_conn_state_set(conn, st_listen); 509 /* XXX Revert conn->ident */ 510 tcp_conn_tw_timer_clear(conn); 511 tcp_tqueue_clear(&conn->retransmit); 512 } else { 513 tcp_conn_reset(conn); 514 } 515 break; 516 case st_established: 517 case st_fin_wait_1: 518 case st_fin_wait_2: 519 case st_close_wait: 520 /* General "connection reset" signal */ 521 tcp_reset_signal(conn); 522 tcp_conn_reset(conn); 523 break; 524 case st_closing: 525 case st_last_ack: 526 case st_time_wait: 527 tcp_conn_reset(conn); 528 break; 529 case st_listen: 530 case st_syn_sent: 531 case st_closed: 532 assert(false); 533 } 534 535 return cp_done; 489 536 } 490 537
Note:
See TracChangeset
for help on using the changeset viewer.