[Python-Dev] Socket timeout patch

Guido van Rossum guido@python.org
Wed, 05 Jun 2002 17:33:55 -0400


>   Ok. Done. One day, you can explain to me why you despise whitespace
> so. Perhaps she was mean to you or something. She's always hanging
> around with that tab guy at any rate and they make a bad mix.

I like the whitespace use in the English language (like so) best.

>   Ok. This has been fixed. All read sizes now work and have been tested
> by me.

Have you written unit tests?  That would be really great.  Ideally,
the tests should pass both before and after your patches.

>   So, the best way to proceed seems to be:
> 
>     if (s->sock_timeout == Py_None)
>        /* Perhaps do nothing, or just do original behavior */
>     else
>        /* Get funky. Do one of the solutions discussed below */

Yes.

> So here are the new semantics:
> 
>   If you set_timeout(int/float/long != None):
>     The actual socket gets put in non-blocking mode and the usual select
>     stuff is done.
>   If you set_timeout(None):
>     The old behavior is used AND automatically, the socket is set
>     to blocking mode. That means that someone who was doing non-blocking
>     stuff before, sets a timeout, and then unsets one, will have to do
>     a set_blocking call again if he wants non-blocking stuff. This makes
>     sense 'cause timeout stuff is blocking by nature.

Sounds good!

--Guido van Rossum (home page: http://www.python.org/~guido/)