Don't provide a (meaningless) cmsg when proving a notification
in a recvmsg() call. MFC after: 1 week
This commit is contained in:
parent
bab65a8418
commit
46bf534caf
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328028
@ -47,7 +47,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>
|
||||
@ -6094,7 +6094,7 @@ sctp_m_free(struct mbuf *m)
|
||||
return (m_free(m));
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
sctp_m_freem(struct mbuf *mb)
|
||||
{
|
||||
while (mb != NULL)
|
||||
@ -6164,6 +6164,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;
|
||||
@ -6191,15 +6192,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 */
|
||||
|
Loading…
Reference in New Issue
Block a user