svn commit: r332232 - stable/11/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Sat Apr 7 20:37:45 UTC 2018
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 */
More information about the svn-src-stable
mailing list