From owner-svn-soc-all@FreeBSD.ORG Mon Jul 1 16:22:46 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0E025BD7 for ; Mon, 1 Jul 2013 16:22:46 +0000 (UTC) (envelope-from dpl@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) by mx1.freebsd.org (Postfix) with ESMTP id D9D80133F for ; Mon, 1 Jul 2013 16:22:45 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r61GMjKP079159 for ; Mon, 1 Jul 2013 16:22:45 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r61GMjUJ079152 for svn-soc-all@FreeBSD.org; Mon, 1 Jul 2013 16:22:45 GMT (envelope-from dpl@FreeBSD.org) Date: Mon, 1 Jul 2013 16:22:45 GMT Message-Id: <201307011622.r61GMjUJ079152@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to dpl@FreeBSD.org using -f From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r253795 - soc2013/dpl/head/contrib/bzip2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 16:22:46 -0000 Author: dpl Date: Mon Jul 1 16:22:45 2013 New Revision: 253795 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=253795 Log: Changed sendfd to use malloc(). Still not working tough. Modified: soc2013/dpl/head/contrib/bzip2/bzip2.c Modified: soc2013/dpl/head/contrib/bzip2/bzip2.c ============================================================================== --- soc2013/dpl/head/contrib/bzip2/bzip2.c Mon Jul 1 15:12:05 2013 (r253794) +++ soc2013/dpl/head/contrib/bzip2/bzip2.c Mon Jul 1 16:22:45 2013 (r253795) @@ -228,11 +228,13 @@ int sendfd(int, int); int recvfd(int); +#define DATALEN CMSG_LEN(sizeof(int)) + int sendfd(int s, int fd) { struct msghdr msg; - struct cmsghdr cmsg; + struct cmsghdr *cmsg; struct iovec io[1]; char buf = { "!" }; int ret; @@ -240,22 +242,25 @@ io[0].iov_base = buf; io[0].iov_len = 1; + if( (cmsg = malloc(DATALEN) ) == NULL ) + return -1; + msg.msg_name = NULL; msg.msg_namelen = 0; msg.msg_iov = io; msg.msg_iovlen = 1; - msg.msg_control = &cmsg; - msg.msg_controllen = CMSG_LEN(sizeof(int)); + msg.msg_control =cmsg; + msg.msg_controllen = DATALEN; - cmsg.cmsg_len = msg.msg_controllen; - cmsg.cmsg_level = SOL_SOCKET; - cmsg.cmsg_type = SCM_RIGHTS; - *(int *)CMSG_DATA(&cmsg) = fd; - printf("sendmsg(%d, %p, 0)\n",s, &msg); + cmsg->cmsg_len = DATALEN; + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + *(int *)CMSG_DATA(cmsg) = fd; if( (ret = sendmsg(s, &msg, 0)) <= 0){ - printf("sendmsg() returned: %d\n", ret); + printf("sendmsg() returned: %d (%s)\n", ret, strerror(errno)); return -1; } + free(cmsg); return 0; } @@ -276,9 +281,9 @@ msg.msg_iov = io; msg.msg_iovlen = 1; msg.msg_control = &cmsg; - msg.msg_controllen = CMSG_LEN(sizeof(int)); + msg.msg_controllen = DATALEN; - cmsg.cmsg_len = msg.msg_controllen; + cmsg.cmsg_len = DATALEN; cmsg.cmsg_level = SOL_SOCKET; cmsg.cmsg_type = SCM_RIGHTS; /*Why does sendmsg set errno to 9 EBADF??*/