diff options
author | rrs <rrs@FreeBSD.org> | 2015-07-22 11:30:37 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2015-07-22 11:30:37 +0000 |
commit | 606fc6cd559dcdd7115db80f7c82470ff6068a17 (patch) | |
tree | fe3b690c2cb0041a06258b9b2c5f4b51cb038ede /sys/netinet/sctputil.c | |
parent | b2a714f330c67d066337007089a3e7044823d46e (diff) | |
download | FreeBSD-src-606fc6cd559dcdd7115db80f7c82470ff6068a17.zip FreeBSD-src-606fc6cd559dcdd7115db80f7c82470ff6068a17.tar.gz |
Fix several problems with Stream Reset.
1) We were not handling (or sending) the IN_PROGRESS case if
the other side (or our side) was not able to reset (awaiting more data).
2) We would improperly send a stream-reset when we should not. Not
waiting until the TSN had been assigned when data was inqueue.
Reviewed by: tuexen
Diffstat (limited to 'sys/netinet/sctputil.c')
-rw-r--r-- | sys/netinet/sctputil.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index c25ec39..b613992 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -1089,6 +1089,7 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, #endif asoc->strmout[i].stream_no = i; asoc->strmout[i].last_msg_incomplete = 0; + asoc->strmout[i].state = SCTP_STREAM_OPENING; asoc->ss_functions.sctp_ss_init_stream(&asoc->strmout[i], NULL); } asoc->ss_functions.sctp_ss_init(stcb, asoc, 0); @@ -6855,7 +6856,7 @@ sctp_log_trace(uint32_t subsys, const char *str SCTP_UNUSED, uint32_t a, uint32_ #endif static void -sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *ignored, +sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *inp, const struct sockaddr *sa SCTP_UNUSED, void *ctx SCTP_UNUSED) { struct ip *iph; |