Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jan 2016 16:05:46 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r294995 - head/sys/netinet
Message-ID:  <201601281605.u0SG5kYU027051@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Thu Jan 28 16:05:46 2016
New Revision: 294995
URL: https://svnweb.freebsd.org/changeset/base/294995

Log:
  Always look in the TCP pool.
  This fixes issues with a restarting peer when the listening
  1-to-1 style socket is closed.
  
  MFC after: 3 days

Modified:
  head/sys/netinet/sctp_input.c
  head/sys/netinet/sctp_pcb.c

Modified: head/sys/netinet/sctp_input.c
==============================================================================
--- head/sys/netinet/sctp_input.c	Thu Jan 28 15:44:14 2016	(r294994)
+++ head/sys/netinet/sctp_input.c	Thu Jan 28 16:05:46 2016	(r294995)
@@ -5688,6 +5688,7 @@ sctp_common_input_processing(struct mbuf
 				if (net->port == 0) {
 					sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
 				}
+printf("Changing remote encaps port from %u to %u.\n", ntohs(net->port), ntohs(port));
 				net->port = port;
 			}
 #endif
@@ -5719,6 +5720,7 @@ sctp_common_input_processing(struct mbuf
 		if (net->port == 0) {
 			sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
 		}
+printf("Changing remote encaps port from %u to %u.\n", ntohs(net->port), ntohs(port));
 		net->port = port;
 	}
 #endif
@@ -5831,6 +5833,7 @@ sctp_common_input_processing(struct mbuf
 				if (net->port == 0) {
 					sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
 				}
+printf("Changing remote encaps port from %u to %u.\n", ntohs(net->port), ntohs(port));
 				net->port = port;
 			}
 #endif

Modified: head/sys/netinet/sctp_pcb.c
==============================================================================
--- head/sys/netinet/sctp_pcb.c	Thu Jan 28 15:44:14 2016	(r294994)
+++ head/sys/netinet/sctp_pcb.c	Thu Jan 28 16:05:46 2016	(r294995)
@@ -2256,7 +2256,6 @@ sctp_findassociation_addr(struct mbuf *m
     struct sctphdr *sh, struct sctp_chunkhdr *ch,
     struct sctp_inpcb **inp_p, struct sctp_nets **netp, uint32_t vrf_id)
 {
-	int find_tcp_pool;
 	struct sctp_tcb *stcb;
 	struct sctp_inpcb *inp;
 
@@ -2268,25 +2267,13 @@ sctp_findassociation_addr(struct mbuf *m
 			return (stcb);
 		}
 	}
-	find_tcp_pool = 0;
-	/*
-	 * Don't consider INIT chunks since that breaks 1-to-1 sockets: When
-	 * a server closes the listener, incoming INIT chunks are not
-	 * responsed by an INIT-ACK chunk.
-	 */
-	if ((ch->chunk_type != SCTP_INITIATION_ACK) &&
-	    (ch->chunk_type != SCTP_COOKIE_ACK) &&
-	    (ch->chunk_type != SCTP_COOKIE_ECHO)) {
-		/* Other chunk types go to the tcp pool. */
-		find_tcp_pool = 1;
-	}
 	if (inp_p) {
 		stcb = sctp_findassociation_addr_sa(src, dst, inp_p, netp,
-		    find_tcp_pool, vrf_id);
+		    1, vrf_id);
 		inp = *inp_p;
 	} else {
 		stcb = sctp_findassociation_addr_sa(src, dst, &inp, netp,
-		    find_tcp_pool, vrf_id);
+		    1, vrf_id);
 	}
 	SCTPDBG(SCTP_DEBUG_PCB1, "stcb:%p inp:%p\n", (void *)stcb, (void *)inp);
 	if (stcb == NULL && inp) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601281605.u0SG5kYU027051>