QNativeSocketEngine: add sendmsg(), recvmsg() wrappers on unix
These functions are useful to pass ancillary data such as extended errors, IP options, protocol control information. Change-Id: I27574f73a60909c7199027160ca4689511e56b72 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
05f8c8c719
commit
737eccf1ef
@ -193,6 +193,32 @@ static inline int qt_safe_sendto(int sockfd, const void *buf, size_t len, int fl
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int qt_safe_recvmsg(int sockfd, struct msghdr *msg, int flags)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
EINTR_LOOP(ret, ::recvmsg(sockfd, msg, flags));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// VxWorks' headers do not specify any const modifiers
|
||||||
|
static inline int qt_safe_sendmsg(int sockfd, const struct msghdr *msg, int flags)
|
||||||
|
{
|
||||||
|
#ifdef MSG_NOSIGNAL
|
||||||
|
flags |= MSG_NOSIGNAL;
|
||||||
|
#else
|
||||||
|
qt_ignore_sigpipe();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int ret;
|
||||||
|
#ifdef Q_OS_VXWORKS
|
||||||
|
EINTR_LOOP(ret, ::sendmsg(sockfd, (struct msghdr *) msg, flags);
|
||||||
|
#else
|
||||||
|
EINTR_LOOP(ret, ::sendmsg(sockfd, msg, flags));
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // QNET_UNIX_P_H
|
#endif // QNET_UNIX_P_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user