Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Dec 2016 15:31:32 +0100
From:      Dimitri Staessens <dimitri.staessens@intec.ugent.be>
To:        Bob Bishop <rb@gid.co.uk>
Cc:        freebsd-bugs@freebsd.org
Subject:   Re: Call to accept() does not time out when setting SO_RCVTIMEO on a socket
Message-ID:  <3fc9cf5b-2e33-d667-0494-359ee6a93085@intec.ugent.be>
In-Reply-To: <22926F6A-7E4A-49D4-BD54-1E81B1002D61@gid.co.uk>
References:  <76cee3a4-18d0-1f8c-eda3-e19c496c39b6@intec.ugent.be> <22926F6A-7E4A-49D4-BD54-1E81B1002D61@gid.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Bob,

thanks for the response. Setting the socket to non-blocking eats the CPU.
I'll probably use select() or poll() with a single fd then.

kind regards,

Dimitri

On 12/08/16 14:37, Bob Bishop wrote:
> Hi,
>
>> On 8 Dec 2016, at 12:41, Dimitri Staessens <dimitri.staessens@intec.ugent.be> wrote:
>>
>> Dear devs,
>>
>> I'm trying to get an accept() call to time out using setsockopt.
>>
>> On Linux, the example below terminates:
>>
>> [dstaesse@phoneutria]$ gcc accept_st.c -o accept_st
>> [dstaesse@phoneutria]$ ./accept_st
>> Timeout is 0:100000.
>> Check is 0:103333.
>> Accept returned: Resource temporarily unavailable.
>> Accept returned: Resource temporarily unavailable.
>> Accept returned: Resource temporarily unavailable.
>> Bye.
>>
>> On FreeBSD 11.0-RELEASE however, it hangs on the accept() forever.
>
> accept() doesn’t work like that on *BSD. Set the socket non-blocking and then accept() returns EWOULDBLOCK if there is nothing to accept.
>
>> Is this a known issue?
>>
>> Thanks for your help,
>>
>> Dimitri
>>
>> --- example source:
>> [snip]
>> -- 
>> Dimitri Staessens
>> Ghent University - imec
>> Dept. of Information Technology (INTEC)
>> Internet Based Communication Networks and Services
>> Technologiepark 15
>> 9052 Zwijnaarde
>> T: +32 9 331 48 70
>> F: +32 9 331 48 99
> --
> Bob Bishop
> rb@gid.co.uk
>
>
>
>

-- 
Dimitri Staessens
Ghent University - imec
Dept. of Information Technology (INTEC)
Internet Based Communication Networks and Services
Technologiepark 15
9052 Zwijnaarde
T: +32 9 331 48 70
F: +32 9 331 48 99




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3fc9cf5b-2e33-d667-0494-359ee6a93085>