Beispiel #1
0
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags) {
    int len = 0;
    for (int i=0; i<msg->msg_iovlen; i++)
        len += msg->msg_iov[i].iov_len;

    bw_bytes += len;

    if (bw_mustDrop()) 
        return len;

    printf("sending %d bytes\n", len);
    return __libc_sendmsg(sockfd, msg, flags);
}
Beispiel #2
0
ssize_t
__sock_sendmsg_r(int fd, const struct msghdr *msg, int flags)
{
	ssize_t ret = -1;

	pthread_cleanup_push_defer_np(__sock_putuser, &fd);
	if (__sock_getuser(fd)) {
		if ((ret = __sock_sendmsg(fd, msg, flags)) == -1)
			pthread_testcancel();
		__sock_putuser(&fd);
	} else {
		if ((ret = __libc_sendmsg(fd, msg, flags)) == -1)
			pthread_testcancel();
	}
	pthread_cleanup_pop_restore_np(0);
	return (ret);
}