[Python-Dev] Modules/socketmodule.c: avoiding second fcntl() call worth the effort?

Benjamin Peterson benjamin at python.org
Sun Jan 20 06:41:17 CET 2013


2013/1/19 Peter Portante <peter.a.portante at gmail.com>:
> Hello folks,
>
> I noticed while stracing a process that sock.setblocking() calls always
> result in pairs of fcntl() calls on Linux. Checking 2.6.8, 2.7.3, and 3.3.0
> Modules/socketmodule.c, the code seems to use the following (unless I have
> missed something):
>
>     delay_flag = fcntl(s->sock_fd, F_GETFL, 0);
>     if (block)
>         delay_flag &= (~O_NONBLOCK);
>     else
>         delay_flag |= O_NONBLOCK;
>     fcntl(s->sock_fd, F_SETFL, delay_flag);
>
> Perhaps a check to see the flags changed might be worth making?

Considering most sockets are only set to blocking once, this doesn't
seem very useful.



-- 
Regards,
Benjamin


More information about the Python-Dev mailing list