[Python-checkins] python/dist/src/Modules socketmodule.c,1.252,1.253

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
2003年2月12日 15:08:25 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv5865
Modified Files:
	socketmodule.c 
Log Message:
Addressing SF bug #643005, implement socket.inet_aton() using
inet_aton() rather than inet_addr() -- the latter is obsolete because
it has a problem: "255.255.255.255" is a valid address but
indistinguishable from an error.
(I'm not sure if inet_aton() exists everywhere -- in case it doesn't,
I've left the old code in with an #ifdef.)
Index: socketmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/socketmodule.c,v
retrieving revision 1.252
retrieving revision 1.253
diff -C2 -d -r1.252 -r1.253
*** socketmodule.c	31 Jan 2003 18:15:58 -0000	1.252
--- socketmodule.c	12 Feb 2003 23:08:22 -0000	1.253
***************
*** 2714,2722 ****
 	/* Have to use inet_addr() instead */
 	char *ip_addr;
! 	unsigned long packed_addr;
 
 	if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr)) {
 		return NULL;
 	}
 	packed_addr = inet_addr(ip_addr);
 
--- 2714,2737 ----
 	/* Have to use inet_addr() instead */
 	char *ip_addr;
! #if 1
! 	struct in_addr buf;
 
 	if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr)) {
 		return NULL;
 	}
+ 
+ 	if (inet_aton(ip_addr, &buf))
+ 		return PyString_FromStringAndSize((char *)(&buf),
+ 						 sizeof(buf));
+ 
+ 	PyErr_SetString(socket_error,
+ 			"illegal IP address string passed to inet_aton");
+ 	return NULL;
+ 
+ #else /* In case you don't have inet_aton() */
+ 	/* XXX Problem here: inet_aton('255.255.255.255') raises
+ 	 an exception while it should be a valid address. */
+ 	unsigned long packed_addr;
+ 
 	packed_addr = inet_addr(ip_addr);
 
***************
*** 2729,2732 ****
--- 2744,2748 ----
 	return PyString_FromStringAndSize((char *) &packed_addr,
 					 sizeof(packed_addr));
+ #endif
 }
 

AltStyle によって変換されたページ (->オリジナル) /