Date: Sat, 2 Aug 2014 14:41:27 +0400 From: Fedor Indutny <fedor@indutny.com> To: freebsd-current@freebsd.org Cc: Mark Johnston <markj@freebsd.org> Subject: Re: KQueue 0-length UDP packet Message-ID: <CAEv2VfK6yoXrWaRKX8u-Pp=ddgDE9%2BGhdUoNCr_AZJUAk29t4w@mail.gmail.com> In-Reply-To: <CAEv2VfLoPiDtEmwJyWMGJuTOaPUTUJoD3B6VQDBE=4A6U4o4-A@mail.gmail.com> References: <CAEv2VfLoPiDtEmwJyWMGJuTOaPUTUJoD3B6VQDBE=4A6U4o4-A@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Guess I know the answer: https://cloudup.com/cCkjLhI4M2r Basically, OSX is checking `kn_data` and FreeBSD is using `so->so_rcv.sb_cc`. Thank you anyway! On Sat, Aug 2, 2014 at 1:39 PM, Fedor Indutny <fedor@indutny.com> wrote: > Hello! > > I'm trying to figure out, why this code: > > https://github.com/indutny/0-udp > > Which basically sends a 0-length UDP packet to a server and polls > kqueue events on the server fd. > > Return 1 kevent on FreeBSD, and blocks indefinitely without > returning any events on OSX. > > So far I could see that FreeBSD and OSX are treating NOTE_LOWAT > differently: > > * > https://github.com/opensource-apple/xnu/blob/2fa84067f6cdeb23267f877ca4fd26201316da1b/bsd/kern/uipc_socket.c#L4461 > * > https://github.com/freebsd/freebsd/blob/6901832d8588537c81afbdb91d1a22deb5582c47/sys/kern/uipc_socket.c#L3163-L3164 > > FreeBSD's NOTE_LOWAT is overriding SO_RCVLOWAT, and OSX is using > SO_RVCLOWAT as a minimum value. But, since NOTE_LOWAT is not > involved here by default, I'm failing to see where exactly this > event could pass through kqueue filter. > > Could anyone with UDP and/or KQueue implementation knowledge > share some insights with me? > > Thank you very much! > Fedor. > > (NOTE: Duplicate, first email wasn't posted, because I wasn't subscribed > to the ML) >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAEv2VfK6yoXrWaRKX8u-Pp=ddgDE9%2BGhdUoNCr_AZJUAk29t4w>