Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Apr 2018 20:37:44 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r332232 - stable/11/sys/netinet
Message-ID:  <201804072037.w37Kbibe093875@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Sat Apr  7 20:37:44 2018
New Revision: 332232
URL: https://svnweb.freebsd.org/changeset/base/332232

Log:
  MFC r328028:
  
  Don't provide a (meaningless) cmsg when proving a notification
  in a recvmsg() call.

Modified:
  stable/11/sys/netinet/sctputil.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netinet/sctputil.c
==============================================================================
--- stable/11/sys/netinet/sctputil.c	Sat Apr  7 20:34:57 2018	(r332231)
+++ stable/11/sys/netinet/sctputil.c	Sat Apr  7 20:37:44 2018	(r332232)
@@ -45,7 +45,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/sctp_output.h>
 #include <netinet/sctp_uio.h>
 #include <netinet/sctp_timer.h>
-#include <netinet/sctp_indata.h>/* for sctp_deliver_data() */
+#include <netinet/sctp_indata.h>
 #include <netinet/sctp_auth.h>
 #include <netinet/sctp_asconf.h>
 #include <netinet/sctp_bsd_addr.h>
@@ -6091,7 +6091,7 @@ sctp_m_free(struct mbuf *m)
 	return (m_free(m));
 }
 
-void 
+void
 sctp_m_freem(struct mbuf *mb)
 {
 	while (mb != NULL)
@@ -6161,6 +6161,7 @@ sctp_soreceive(struct socket *so,
 	struct sockaddr *from;
 	struct sctp_extrcvinfo sinfo;
 	int filling_sinfo = 1;
+	int flags;
 	struct sctp_inpcb *inp;
 
 	inp = (struct sctp_inpcb *)so->so_pcb;
@@ -6188,15 +6189,24 @@ sctp_soreceive(struct socket *so,
 	if (filling_sinfo) {
 		memset(&sinfo, 0, sizeof(struct sctp_extrcvinfo));
 	}
-	error = sctp_sorecvmsg(so, uio, mp0, from, fromlen, flagsp,
+	if (flagsp != NULL) {
+		flags = *flagsp;
+	} else {
+		flags = 0;
+	}
+	error = sctp_sorecvmsg(so, uio, mp0, from, fromlen, &flags,
 	    (struct sctp_sndrcvinfo *)&sinfo, filling_sinfo);
+	if (flagsp != NULL) {
+		*flagsp = flags;
+	}
 	if (controlp != NULL) {
 		/* copy back the sinfo in a CMSG format */
-		if (filling_sinfo)
+		if (filling_sinfo && ((flags & MSG_NOTIFICATION) == 0)) {
 			*controlp = sctp_build_ctl_nchunk(inp,
 			    (struct sctp_sndrcvinfo *)&sinfo);
-		else
+		} else {
 			*controlp = NULL;
+		}
 	}
 	if (psa) {
 		/* copy back the address info */



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