@@ -1954,11 +1954,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
1954
1954
/* temp code */
1955
1955
if (how_indx < sizeof (asoc -> cookie_how ))
1956
1956
asoc -> cookie_how [how_indx ] = 12 ;
1957
- sctp_timer_stop (SCTP_TIMER_TYPE_INIT , inp , stcb , net ,
1958
- SCTP_FROM_SCTP_INPUT + SCTP_LOC_16 );
1959
- sctp_timer_stop (SCTP_TIMER_TYPE_HEARTBEAT , inp , stcb , net ,
1960
- SCTP_FROM_SCTP_INPUT + SCTP_LOC_17 );
1961
-
1957
+ sctp_stop_association_timers (stcb , false);
1962
1958
/* notify upper layer */
1963
1959
* notification = SCTP_NOTIFY_ASSOC_RESTART ;
1964
1960
atomic_add_int (& stcb -> asoc .refcnt , 1 );
@@ -1991,6 +1987,10 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
1991
1987
asoc -> str_reset_seq_in = asoc -> init_seq_number ;
1992
1988
asoc -> advanced_peer_ack_point = asoc -> last_acked_seq ;
1993
1989
asoc -> send_sack = 1 ;
1990
+ asoc -> data_pkts_seen = 0 ;
1991
+ asoc -> last_data_chunk_from = NULL ;
1992
+ asoc -> last_control_chunk_from = NULL ;
1993
+ asoc -> last_net_cmt_send_started = NULL ;
1994
1994
if (asoc -> mapping_array ) {
1995
1995
memset (asoc -> mapping_array , 0 ,
1996
1996
asoc -> mapping_array_size );
@@ -2055,6 +2055,9 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
2055
2055
SCTP_ZONE_FREE (SCTP_BASE_INFO (ipi_zone_chunk ), chk );
2056
2056
SCTP_DECR_CHK_COUNT ();
2057
2057
}
2058
+ asoc -> ctrl_queue_cnt = 0 ;
2059
+ asoc -> str_reset = NULL ;
2060
+ asoc -> stream_reset_outstanding = 0 ;
2058
2061
TAILQ_FOREACH_SAFE (chk , & asoc -> asconf_send_queue , sctp_next , nchk ) {
2059
2062
TAILQ_REMOVE (& asoc -> asconf_send_queue , chk , sctp_next );
2060
2063
if (chk -> data ) {
@@ -2141,12 +2144,13 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
2141
2144
return (NULL );
2142
2145
}
2143
2146
/* respond with a COOKIE-ACK */
2144
- sctp_stop_all_cookie_timers (stcb );
2145
- sctp_toss_old_cookies (stcb , asoc );
2146
2147
sctp_send_cookie_ack (stcb );
2147
2148
if (how_indx < sizeof (asoc -> cookie_how ))
2148
2149
asoc -> cookie_how [how_indx ] = 15 ;
2149
-
2150
+ if (sctp_is_feature_on (inp , SCTP_PCB_FLAGS_AUTOCLOSE ) &&
2151
+ (asoc -> sctp_autoclose_ticks > 0 )) {
2152
+ sctp_timer_start (SCTP_TIMER_TYPE_AUTOCLOSE , inp , stcb , NULL );
2153
+ }
2150
2154
return (stcb );
2151
2155
}
2152
2156
if (how_indx < sizeof (asoc -> cookie_how ))
0 commit comments