Issue 1476111: SystemError in socket sendto (original) (raw)
A socket's sendto method can be tricked into a SystemError exception. This happens with:
Linux special 2.4.29 #19 Thu Jan 27 20:51:25 CET 2005 i686 unknown and Python 2.4.2 (#2, Dec 27 2005, 11:06:14)
but: Linux vesuv6 2.4.20-4GB #1 Mon Mar 17 17:54:44 UTC 2003 i686 unknown unknown GNU/Linux Python 2.3.3 (#1, Jun 29 2004, 14:43:40) [GCC 3.3 20030226 (prerelease) (SuSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
shows the same behaviour.
These 4 lines demonstrate the failure: import socket s = socket.socket( socket.PF_PACKET, socket.SOCK_RAW, socket.htons( 0x0003 ) ) s.sendto( "abc", 0, range( 6 ) )
yields:
Traceback (most recent call last): File "serr.py", line 7, in ? s.sendto( "abc", 0, range( 6 ) ) SystemError: new style getargs format but argument is not a tuple
HTH, Gerald
Logged In: YES user_id=34209
Well, 'tricked' is a bit of a big word; it just means you passed the wrong type of address; AF_PACKET expects a tuple (of string+int or int+int+string), and not a list. It didn't have any ill effects (other than confusing the programmer.) I fixed the errormessage for AF_PACKET (and AF_INET6, which was also missing) in trunk revision 45714 (so it'll be in 2.5 alpha 2.) Thanks!