Discussion:
[9fans] ape: getsockname: wrong byte order in sin_port
(too old to reply)
Yaroslav
2013-01-08 13:57:24 UTC
Permalink
APE's getsockname() returns port with bytes swapped (on 386).
Fix:

/n/dump/2013/0108/sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41 -
/sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41
if(p){
*p++ = 0;
ip->sin_family = AF_INET;
- ip->sin_port = atoi(p);
+ ip->sin_port = htons(atoi(p));
ip->sin_addr.s_addr = inet_addr(name);
if(alen)
*alen = sizeof(struct sockaddr_in);

Python needs to be relinked.
--
- Yaroslav
erik quanstrom
2013-01-08 21:02:24 UTC
Permalink
Post by Yaroslav
APE's getsockname() returns port with bytes swapped (on 386).
/n/dump/2013/0108/sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41 -
/sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41
if(p){
*p++ = 0;
ip->sin_family = AF_INET;
- ip->sin_port = atoi(p);
+ ip->sin_port = htons(atoi(p));
ip->sin_addr.s_addr = inet_addr(name);
if(alen)
*alen = sizeof(struct sockaddr_in);
Python needs to be relinked.
agree. patch submitted. /n/sources/patch/sin_port

- erik

Loading...