X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=klibc%2Fklibc%2Finet%2Fbindresvport.c;h=750bd709c495ac50245bc5b5f76a17cad2b218ee;hb=a0622777688ad84ef3d789e0171cfb0ca3dc21d2;hp=c30054edfd326566e95b0af94bcaa8ed79201f93;hpb=9e8a3a095d955538acbdf28dba02582f6b2330e5;p=elogind.git diff --git a/klibc/klibc/inet/bindresvport.c b/klibc/klibc/inet/bindresvport.c index c30054edf..750bd709c 100644 --- a/klibc/klibc/inet/bindresvport.c +++ b/klibc/klibc/inet/bindresvport.c @@ -9,8 +9,8 @@ #include #include -#define START_PORT 600 -#define END_PORT (IPPORT_RESERVED - 1) +#define START_PORT 768 +#define END_PORT IPPORT_RESERVED #define NUM_PORTS (END_PORT - START_PORT) int bindresvport(int sd, struct sockaddr_in *sin) @@ -21,14 +21,12 @@ int bindresvport(int sd, struct sockaddr_in *sin) int i; if (sin == NULL) { + memset(&me, 0, sizeof(me)); sin = &me; - memset(sin, 0, sizeof(me)); - sin->sin_port = AF_INET; - } - else if (sin->sin_family != AF_INET) { + sin->sin_family = AF_INET; + } else if (sin->sin_family != AF_INET) { errno = EPFNOSUPPORT; - ret = -1; - goto bail; + return -1; } if (port == 0) { @@ -36,13 +34,12 @@ int bindresvport(int sd, struct sockaddr_in *sin) } for (i = 0; i < NUM_PORTS; i++, port++) { - sin->sin_port = htons(port); - if ((ret = bind(sd, (struct sockaddr *)&sin, sizeof(*sin))) != -1) - break; if (port == END_PORT) port = START_PORT; + sin->sin_port = htons(port); + if ((ret = bind(sd, (struct sockaddr *)sin, sizeof(*sin))) != -1) + break; } - bail: return ret; }