Re: Socket sendmsg() porting question

From: Julian Elischer <julian_at_freebsd.org>
Date: Thu, 4 Aug 2016 15:14:49 +0800
On 4/08/2016 1:18 AM, Lundberg, Johannes wrote:
> ​Hi Alan
>
> Thanks for the reply.
>
> Can I still use the same receiving function for sendmsg/send and tell what
> kind of message is coming?
> How would I tell if there is an fd attached or not?
>
> Even if I set cmsg_level and cmsg_type it won't let me send it. The problem
> is having a zero length attachment on freebsd....
> I can't send -1 as fd because that errors to invalid file descriptor.
>
>
> On Wed, Aug 3, 2016 at 10:12 AM, Alan Somers <asomers_at_freebsd.org> wrote:
>
>> On Wed, Aug 3, 2016 at 10:54 AM, Lundberg, Johannes
>> <johannes_at_brilliantservice.co.jp> wrote:
>>> Hi
>>>
>>> I'm porting a project to fbsd and I have problem with this part that
>> works
>>> in linux but not fbsd when fd = -1.
>>>
>>> https://github.com/Cloudef/wlc/blob/master/src/session/fd.c#L80-L108
>>>
>>> I get "invalid argument" from sendmsg() when setting CMSG_LEN(0).
>>>
>>> Anyone have a clue how to correctly do this on fbsd?
>>>
>>> Thanks!
>>>
>>> Johannes
>>>
>> It sounds like you're trying to send an empty cmsg.  The error may
>> happen because your msg_controllen field is inconsistent with your
>> cmsg_len field.  You're setting msg_controllen as if there were a full
>> cmsg, but  then cmsg_len says that there is no cmsg.  Or maybe the
>> error is because (just guessing) FreeBSD doesn't allow sending empty
>> or undefined cmsgs.  Notice that cmsg_level and cmsg_type are
>> undefined in the case where fd == -1.  POSIX doesn't say whether
>> sendmsg supports empty cmsgs, but why bother?  You could just use send
>> instead of sendmsg if you're not sending a file descriptor.
>>
>> -Alan
>>
I think it's a standards interpretation thing.

what data do you send WITH the message? I assume you have some in-band 
data as well.

if you have no FD, just use "sendto()."

the other end will still be able to do a recvmesg() but will discover 
no added info.
Received on Thu Aug 04 2016 - 05:15:02 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:07 UTC