This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/baseband-devel@lists.osmocom.org/.
willem itsme at xs4all.nlOn 2010-03-29 16:39:31, willem wrote:
> On 2010-03-29 12:52:11, Holger Freyther wrote:
>
>> On Monday 29 March 2010 12:39:48 willem wrote:
>>
>>
>>> the /tmp/osmoncon* sockets created by osmocon are created one character
>>> too short.
>>>
>>>
>> Can you explain?
>>
>>
> the sockaddr struct for named sockets is defined like this ( on my mac )
>
>
> struct sockaddr_un {
> unsigned char sun_len; /* sockaddr len including null */
> sa_family_t sun_family; /* [XSI] AF_UNIX */
> char sun_path[104]; /* [XSI] path name (gag) */
> };
>
> the sun_len value is ignored.
> but the total length of the struct passed to bind / connect
> should include it.
>
> without this fix, the second time i run './osmocon' it will complain:
> Failed to bind the unix domain socket
> since it tried to unlink the correct name, but called bind with a one
> char too short name.
>
now checked cygwin headers. there the sun_len member is missing.
the more portable way would be to use SUN_LEN(&local)
i also noticed that the cygwin version of 'bind' apparently ignores the
socklen_t parameter.
and internally uses strlen to find the length.
on freebsd and osx you should use the SUN_LEN macro to pass the correct
length of
the sockaddr_un struct.
willem