[Python-Dev] Re: [Python-checkins] python/dist/src/Modules socketmodule.c, 1.298, 1.299

Dave Cole djc at object-craft.com.au
Fri Aug 20 07:06:21 CEST 2004


Andrew McNamara wrote:
>>>Patch #1003700: Add socketpair function to socket module.
>>
>>The docstring (below) states the arguments are the same as socket().
>>However, in sock_initobj() line 2496, the family is initialized to
>>AF_INET.  I think the #if defined(AF_UNIX) code above should be
>>removed and family should be initialized to AF_INET.
> 
> 
> I talked Dave into this - AF_UNIX is typically the only address family
> that is valid for socketpair(). Using AF_INET under linux and OS X
> results in EOPNOTSUPP.

I wondered about the AF_UNIX/AF_INET thing.  When looking through the 
code I noticed that all references to AF_UNIX were #ifdef enclosed.  I 
decided to allow for the possibility of socketpair() support on a 
platform that supports AF_INET but not AF_UNIX (no idea if such a thing 
exists).  The other alternative could have been to conditional include 
socketpair() only if both AF_UNIX and HAVE_SOCKETPAIR are defined.

Another thing to consider is the prior art in the form of eunuchs.  The 
implementation of socketpair() in eunuchs defaults to AF_UNIX.  Code 
using eunuchs is probably assuming AF_UNIX - not a bad assumption really.

Would a change to the documentation and docstring be sufficient it it 
explained that the default family is AF_UNIX if defined for the 
platform, AF_INET otherwise?

>>I don't think the #ifdef SIGPIPE code is correct.  If the user
>>installed a signal handler calling signal() will remove it.  I 
>>think the call to signal() should be removed.
> 
> 
> I agree, but I think that was copied verbatim from elsewhere in
> socketmodule.c, so it was left with the aim of being bug for bug
> compatible with socket.socket().

Indeed.  I was not going to change something as fundamental as the 
existing signal handling.  The onyl sensible thing to do was to copy the 
behaviour already in place when you create a socket the "normal" way.

-- 
http://www.object-craft.com.au


More information about the Python-Dev mailing list