Menu

#656 socket.c assumes xopen getsockopt/getsockname

closed-fixed
libcurl (356)
6
2013-06-21
2007-06-07
rrauenza
No

HPUX doesn't use the XOPEN getsockopt/getsockname interfaces by default (for backwards compatibility).

int setsockopt(
int s,
int level,
int optname,
const void *optval,
int optlen
);

_XOPEN_SOURCE_EXTENDED Only (UNIX 98)
int getsockopt(
int s,
int level,
int optname,
void *optval,
socklen_t *optlen
);

When compiling 64bit, socklen_t is 64bit, but int is 32bit, so optlen ends up being 0 due the socklen being treated as a 32bit value.

Here's the required changes -- simply changing the parms to be ints instead of socklens when not using _XOPEN_SOURCE_EXTENDED and HPUX

$ rcsdiff connect.c
RCS file: connect.c,v
retrieving revision 1.1
rdiff -r1.1 connect.c
367a368,370
> #if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
> int size;
> #else
368a372
> #endif
407a412,414
> #if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
> int errSize = sizeof(err);
> #else
408a416
> #endif

Discussion

  • rrauenza

    rrauenza - 2007-06-07

    Logged In: YES
    user_id=1309815
    Originator: YES

    Looks like ftp.c and tftp.c also need to be fixed. Anywhere those calls are made.

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-08

    Logged In: YES
    user_id=1110
    Originator: NO

    Can you please submit the patch done with diff -u ? I'm having trouble reading it unless there's some context in it as well.

    Is there any particular reason why we shouldn't just try to define _XOPEN_SOURCE_EXTENDED properly and make your system act/work like other systems instead? I'd really hate to add such a kludgey #ifdef mess in at least three different source files. It'll also just beg for this to happen the next time we add such a function call or modify one of the existing.

    I would really prefer a way that cures the problem without relying on #ifdefs where getsockopt() is used. You think that is possible?

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-08
    • priority: 5 --> 6
     
  • rrauenza

    rrauenza - 2007-06-08

    Logged In: YES
    user_id=1309815
    Originator: YES

    No, it can't be fixed by just defining _XOPEN_SOURCE_EXTENDED in curl's configure because some applications linking with curl are compiled without it. (The one I found this bug with is has this exact case).

    If my application uses the BSD interfaces, it would not work with curl if curl was compiled with _XOPEN_SOURCE_EXTENDED. It gets sticky because some OTHER 3rd party dependencies may or may not have XOPEN_SOURCE defined and you have to find the common denominator.. or where it breaks the least. Best compatibility is to allow both modes of compilations by end user (later versions of HPUX has a fix for this to allow mixed linkages.. but it won't be on the earlier OS's you may wish to support.)

    This doesn't break on other platforms because socklen is always a 32bit value. For some reason HPUX typedefs socklen to be a size_t, which is 64bit in 64bit ABI's.

    If there is a common header you might do something like..

    #if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    #define socklen_t int
    #endif

    but I don't know offhand if that could break anything else... outside of system include files, of course.

    Here's more context of my changes in socket.c -- this is really only a problem for the socket calls that take a pointer to a socklen_t. The others are passed by value and the compiler just casts the 64bit value down to an int.

    Interestingly, krb4.c works ok because it uses an int:

    int l = sizeof(conn->local_addr);
    struct SessionHandle *data = conn->data;
    CURLcode result;

    if(getsockname(conn->sock[FIRSTSOCKET],
    (struct sockaddr *)LOCAL_ADDR, &l) < 0)
    perror("getsockname()");

    Diff's:

    $ /usr/local/bin/diff -u ftp.c ftp.c.orig
    --- ftp.c 2007-06-08 15:34:22 -0700
    +++ ftp.c.orig 2007-06-08 15:28:09 -0700
    @@ -222,12 +222,7 @@
    #else
    struct sockaddr_in add;
    #endif
    -
    -#if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    - int size = sizeof(add);
    -#else
    socklen_t size = (socklen_t) sizeof(add);
    -#endif

    if(0 == getsockname(sock, (struct sockaddr *) &add, &size)) {
    size = sizeof(add);
    @@ -819,11 +814,7 @@
    */
    struct Curl_sockaddr_storage ss;
    struct addrinfo *res, *ai;
    -#if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    - int sslen;
    -#else
    socklen_t sslen;
    -#endif
    char hbuf[NI_MAXHOST];
    struct sockaddr *sa=(struct sockaddr *)&ss;
    char tmp[1024];
    @@ -1122,11 +1113,7 @@
    if(bind(portsock, (struct sockaddr *)&sa, sslen) == 0) {
    /* we succeeded to bind */
    struct sockaddr_in add;
    -#if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    - int socksize = sizeof(add);
    -#else
    socklen_t socksize = sizeof(add);
    -#endif

    if(getsockname(portsock, (struct sockaddr *) &add,
    &socksize)) {
    $ /usr/local/bin/diff -u connect.c connect.c.orig
    --- connect.c 2007-06-08 15:25:36 -0700
    +++ connect.c.orig 2007-06-08 15:25:51 -0700
    @@ -365,11 +365,7 @@
    if( bind(sockfd, sock, socksize) >= 0) {
    /* we succeeded to bind */
    struct Curl_sockaddr_storage add;
    -#if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    - int size;
    -#else
    socklen_t size;
    -#endif

    size = sizeof(add);
    if(getsockname(sockfd, (struct sockaddr *) &add, &size) < 0) {
    @@ -409,11 +405,7 @@
    bool rc = TRUE;
    #ifdef SO_ERROR
    int err = 0;
    -#if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    - int errSize = sizeof(err);
    -#else
    socklen_t errSize = sizeof(err);
    -#endif

    #ifdef WIN32
    /*

    Another option could be something like this where hp_getsockname does the cast/copy from socklen_t to temp int before passing the ptr..

    #if defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    #define getsockname(a,b,c) hp_getsockname(a,b,c)
    #define getsockopt(a,b,c) hp_getopt(a,b,c)
    #endif

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-11

    Logged In: YES
    user_id=1110
    Originator: NO

    The configure script already checks for an existing socklen_t type and if it doesn't exist, it provides an alternative. What does your lib/config.h say about socklen_t when configure has run?

    If you make sure it does a '#define socklen_t int' in there, does that make the build work?

     
  • rrauenza

    rrauenza - 2007-06-11

    Logged In: YES
    user_id=1309815
    Originator: YES

    simply #defining apparently doesn't work.. although I only did it by:

    $ CFLAGS="+DD64 -Dsocklen_t=int"

    Adding it to config.h doesn't work either since it is included before system headers..

    cc -DHAVE_CONFIG_H -I../include -I../lib -I../lib +DD64 -Dsocklen_t=int -c +Maked file.c -DPIC -o .libs/file.o
    "/usr/include/sys/socket.h", line 205: error #2084: invalid combination of
    type specifiers
    typedef size_t socklen_t;
    ^
    Here's what it gets by default:

    vega7077-root-># grep socklen lib/config.h
    #define GETNAMEINFO_TYPE_ARG2 socklen_t
    /* type to use in place of socklen_t if not defined */
    /* #undef socklen_t */
    vega7077-root->#

    The problem isn't that socklen_t doesn't exist, it's that the prototype (and function) for the xopen version and the libc version are different.

    Rich

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-12

    Logged In: YES
    user_id=1110
    Originator: NO

    so all the other uses of socklen_t in libcurl is fine as is, it is just when we use getsockname() and getsockopt() we need to use an "improved socklen_t" ?

    And yeah, I think I'm in favour of the #define getsockopt() Curl_hp_getsockopt() approach so that the main source code can remain without #ifdefs for this case.

    Can you check this patch and verify that I got this right, or even fix it in case I missed some details. I've put the patch here:

    http://daniel.haxx.se/curl/hp-socklen.patch

     
  • rrauenza

    rrauenza - 2007-06-12

    Logged In: YES
    user_id=1309815
    Originator: YES

    I had to make a couple of modifications. But even with these, make test doesn't work -- because the implementation doesn't get pulled into the other a.out's?

    make test
    No suffix list.
    Making all in data
    No suffix list.
    Making all in server
    /bin/sh ../../libtool --tag=CC --mode=link cc +DD64 -o getpart testpart.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    cc +DD64 -o getpart testpart.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    source='resolve.c' object='resolve.o' libtool=no \ DEPDIR=.deps depmode=hp2 /bin/sh ../../depcomp \ cc -DHAVE_CONFIG_H -I. -I../../lib -I../../src -I../../include -I../../lib -I../../lib +DD64 -c resolve.c
    /bin/sh ../../libtool --tag=CC --mode=link cc +DD64 -o resolve resolve.o util.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    cc +DD64 -o resolve resolve.o util.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    source='tftpd.c' object='tftpd.o' libtool=no \ DEPDIR=.deps depmode=hp2 /bin/sh ../../depcomp \ cc -DHAVE_CONFIG_H -I. -I../../lib -I../../src -I../../include -I../../lib -I../../lib +DD64 -c tftpd.c
    /bin/sh ../../libtool --tag=CC --mode=link cc +DD64 -o tftpd tftpd.o util.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    cc +DD64 -o tftpd tftpd.o util.o getpart.o strequal.o base64.o mprintf.o memdebug.o timeval.o
    ld: Unsatisfied symbol "Curl_hp_recvfrom" in file tftpd.o
    1 errors.
    *** Error exit code 1

    Stop.
    *** Error exit code 1

    Stop.
    *** Error exit code 1

    Stop.

    Would you want to try making the implementation inline? HP's C compiler supports it, and I think gcc does as well. (Or they could be made static)

    Rich

    $ /usr/local/bin/diff -u curl-7.16.2/lib/connect.c curl-7.16.2.fix2/lib/connect.c
    --- curl-7.16.2/lib/connect.c 2007-03-27 14:14:07 -0700
    +++ curl-7.16.2.fix2/lib/connect.c 2007-06-12 13:07:17 -0700
    @@ -884,3 +884,57 @@

    return CURLE_OK;
    }
    +
    +#if defined(__LP64__) && defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    +/* HP-UX has this oddity where it features a few functions that don't work
    + with socklen_t so we need to convert to ints */
    +
    +#undef getsockname
    +#undef getsockopt
    +#undef accept
    +#undef recvfrom
    +
    +int Curl_hp_getsockname(int s, struct sockaddr *name, socklen_t *namelen)
    +{
    + int rc;
    + int len = *namelen;
    + rc = getsockname(s, name, &len);
    +
    + // always copy? if(!rc)
    + *namelen = len;
    + return rc;
    +}
    +int Curl_hp_getsockopt(int s, int level, int optname, void *optval,
    + socklen_t *optlen)
    +{
    + int rc;
    + int len = *optlen;
    + rc = getsockopt(s, level, optname, optval, &len);
    + // always copy? if(!rc)
    + *optlen = len;
    + return rc;
    +}
    +
    +int Curl_hp_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
    +{
    + int rc;
    + int len = *addrlen;
    + rc = accept(sockfd, addr, &len);
    + // I think I would always do the copy. if(!rc)
    + *addrlen = len;
    + return rc;
    +}
    +
    +
    +ssize_t Curl_hp_recvfrom(int s, void *buf, size_t len, int flags,
    + struct sockaddr *from, socklen_t *fromlen) {
    + ssize_t rc;
    + int fromlen32 = *fromlen;
    + rc = recvfrom(s, buf, len, flags, from, &fromlen32);
    + // I think I would always do the copy. if(!rc)
    + *fromlen = fromlen32;
    + return rc;
    +
    +}
    +
    +#endif

    $ /usr/local/bin/diff -u curl-7.16.2/lib/setup_once.h curl-7.16.2.fix2/lib/setup_once.h
    --- curl-7.16.2/lib/setup_once.h 2007-04-11 06:10:22 -0700
    +++ curl-7.16.2.fix2/lib/setup_once.h 2007-06-12 11:14:40 -0700
    @@ -343,6 +343,28 @@
    #define EREMOTE WSAEREMOTE
    #endif

    +#if defined (__LP64__) && defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    +#include <sys/socket.h>
    +/* HP-UX has this oddity where it features a few functions that don't work
    + with socklen_t so we need to convert to ints
    +
    + This is due to socklen_t being 64bit under 64bit ABI, but the
    + pre-xopen (default) interfaces requiring an int, which is 32bits.
    +
    + Anytime socklen_t is passed by pointer, the function truncates
    + the 64bit socklen_t value by treating it as a 32bit value. */
    +#define getsockname(a,b,c) Curl_hp_getsockname((a),(b),(c))
    +#define getsockopt(a,b,c,d,e) Curl_hp_getsockopt((a),(b),(c),(d),(e))
    +#define accept(a,b,c) Curl_hp_accept((a),(b),(c))
    +#define recvfrom(a,b,c,d,e,f) Curl_hp_recvfrom((a),(b),(c),(d),(e),(f))
    +int Curl_hp_getsockname(int s, struct sockaddr *name, socklen_t *namelen);
    +int Curl_hp_getsockopt(int s, int level, int optname, void *optval,
    + socklen_t *optlen);
    +int Curl_hp_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
    +ssize_t Curl_hp_recvfrom(int s, void *buf, size_t len, int flags,
    + struct sockaddr *from, socklen_t *fromlen);
    +#endif
    +

    #endif /* __SETUP_ONCE_H */

     
  • rrauenza

    rrauenza - 2007-06-12

    Logged In: YES
    user_id=1309815
    Originator: YES

    This works. I think this is probably the best option. Only problem is I'm not sure it works with gcc. __inline should be the gcc equivalent, or just static.

    vega7077-root-># /usr/local/bin/diff -u curl-7.16.2/lib/setup_once.h curl-7.16.2.fix3/lib/setup_once.h
    --- curl-7.16.2/lib/setup_once.h 2007-04-11 06:10:22 -0700
    +++ curl-7.16.2.fix3/lib/setup_once.h 2007-06-12 13:42:26 -0700
    @@ -343,6 +343,83 @@
    #define EREMOTE WSAEREMOTE
    #endif

    +#if defined (__LP64__) && defined(__hpux) && ! defined(_XOPEN_SOURCE_EXTENDED)
    +#include <sys/socket.h>
    +/* HP-UX has this oddity where it features a few functions that don't work
    + with socklen_t so we need to convert to ints
    +
    + This is due to socklen_t being a 64bit int under 64bit ABI, but the
    + pre-xopen (default) interfaces require an int, which is 32bits.
    +
    + Therefore, Anytime socklen_t is passed by pointer, the libc function
    + truncates the 64bit socklen_t value by treating it as a 32bit value.
    +
    + Note that some socket calls are allowed to have a NULL pointer for
    + the socklen arg.
    +*/
    +
    +__inline int Curl_hp_getsockname(int s, struct sockaddr *name, socklen_t *namelen)
    +{
    + int rc;
    + if(namelen) {
    + int len = *namelen;
    + rc = getsockname(s, name, &len);
    + *namelen = len;
    + } else {
    + rc = getsockname(s, name, 0);
    + }
    + return rc;
    +}
    +
    +__inline int Curl_hp_getsockopt(int s, int level, int optname, void *optval,
    + socklen_t *optlen)
    +{
    + int rc;
    + if(optlen) {
    + int len = *optlen;
    + rc = getsockopt(s, level, optname, optval, &len);
    + *optlen = len;
    + } else {
    + rc = getsockopt(s, level, optname, optval, 0);
    + }
    + return rc;
    +}
    +
    +__inline int Curl_hp_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
    +{
    + int rc;
    + if(addrlen) {
    + int len = *addrlen;
    + rc = accept(sockfd, addr, &len);
    + *addrlen = len;
    + } else {
    + rc = accept(sockfd, addr, 0);
    + }
    + return rc;
    +}
    +
    +
    +__inline ssize_t Curl_hp_recvfrom(int s, void *buf, size_t len, int flags,
    + struct sockaddr *from, socklen_t *fromlen) {
    + ssize_t rc;
    + if(fromlen) {
    + int fromlen32 = *fromlen;
    + rc = recvfrom(s, buf, len, flags, from, &fromlen32);
    + *fromlen = fromlen32;
    + } else {
    + rc = recvfrom(s, buf, len, flags, from, 0);
    + }
    + return rc;
    +
    +}
    +
    +#define getsockname(a,b,c) Curl_hp_getsockname((a),(b),(c))
    +#define getsockopt(a,b,c,d,e) Curl_hp_getsockopt((a),(b),(c),(d),(e))
    +#define accept(a,b,c) Curl_hp_accept((a),(b),(c))
    +#define recvfrom(a,b,c,d,e,f) Curl_hp_recvfrom((a),(b),(c),(d),(e),(f))
    +
    +#endif
    +

    #endif /* __SETUP_ONCE_H */

    Did a make test...

    test 527...OK (327 out of 347, remaining: 00:08)
    test 528...OK (328 out of 347, remaining: 00:08)
    test 529...OK (329 out of 347, remaining: 00:08)
    test 530...OK (330 out of 347, remaining: 00:07)
    test 531...OK (331 out of 347, remaining: 00:07)
    test 532...OK (332 out of 347, remaining: 00:07)
    test 533...OK (333 out of 347, remaining: 00:06)
    test 534...OK (334 out of 347, remaining: 00:06)
    test 535...OK (335 out of 347, remaining: 00:05)
    test 537...OK (336 out of 347, remaining: 00:05)
    test 538...OK (337 out of 347, remaining: 00:04)
    sh: 10610 Terminated
    sh: 10355 Terminated
    sh: 11389 Terminated
    TESTDONE: 310 tests out of 310 reported OK: 100%
    TESTDONE: 347 tests were considered during 170 seconds.
    TESTINFO: 37 tests were skipped due to these restraints:
    TESTINFO: "no stunnel" 14 times (300, 301, 302, 303, 304, 305, 306, 307, 308, 400, 401, 403, 404, 509)
    TESTINFO: "Resolving 'ip6-localhost' didn't work" 1 times (241)
    TESTINFO: "curl lacks libz support" 5 times (220, 221, 222, 223, 224)
    TESTINFO: "curl lacks scp support" 4 times (601, 603, 605, 607)
    TESTINFO: "curl lacks idn support" 1 times (165)
    TESTINFO: "curl lacks netrc_debug support" 6 times (130, 131, 132, 133, 134, 257)
    TESTINFO: "curl lacks sftp support" 6 times (600, 602, 604, 606, 608, 609)

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-12

    Logged In: YES
    user_id=1110
    Originator: NO

    Many thanks, I just committed a slightly edited version of this patch and I would be grateful if you could verify that it builds fine for you. I added a check for inline to the configure script, so it should be fine to use with 'inline'.

    In my commit message I also speculate on your real name, and if you can just confirm that I'll make sure to give you proper credit for your work!

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-12
    • status: open --> open-fixed
     
  • rrauenza

    rrauenza - 2007-06-13

    Logged In: YES
    user_id=1309815
    Originator: YES

    I grabbed the CVS, but couldn't get autoconf to work.. I'll just grab tomorrow's CVS auto-tarball.

     
  • rrauenza

    rrauenza - 2007-06-13

    Logged In: YES
    user_id=1309815
    Originator: YES

    The tests I was able to do seem to pass just fine! This is the 64bit output. 32bit also passed.

    ********* System characteristics ********
    * curl 7.16.3-20070613 (ia64-hp-hpux11.31)
    * libcurl/7.16.3-20070613 OpenSSL/0.9.8d
    * Features: IPv6 Largefile NTLM SSL
    * Host: vega7077
    * System: HP-UX vega7077 B.11.31 U ia64 1304157329 unlimited-user license
    * Server SSL: OFF
    * libcurl SSL: ON
    * libcurl debug: OFF
    * valgrind: OFF
    * HTTP IPv6 ON
    * FTP IPv6 ON
    * HTTP port: 8990
    * FTP port: 8992
    * FTP port 2: 8995
    * HTTP IPv6 port: 8994
    * FTP IPv6 port: 8996
    * TFTP port: 8997
    * SCP/SFTP port: 8999
    * SOCKS port: 9000
    * SSL library: OpenSSL
    * Libtool lib: ON
    *****************************************
    test 001...OK (1 out of 369, remaining: 12:16)
    test 002...OK (2 out of 369, remaining: 06:07)
    test 003...OK (3 out of 369, remaining: 04:04)
    test 004...OK (4 out of 369, remaining: 03:02)
    test 005...OK (5 out of 369, remaining: 02:25)
    test 006...OK (6 out of 369, remaining: 02:01)
    test 007...OK (7 out of 369, remaining: 01:43)
    test 008...OK (8 out of 369, remaining: 01:30)
    test 009...OK (9 out of 369, remaining: 03:20)
    test 010...OK (10 out of 369, remaining: 04:11)
    test 011...OK (11 out of 369, remaining: 03:47)
    test 012...OK (12 out of 369, remaining: 03:28)
    test 013...OK (13 out of 369, remaining: 03:11)
    test 014...OK (14 out of 369, remaining: 02:57)
    test 015...OK (15 out of 369, remaining: 02:45)
    test 016...OK (16 out of 369, remaining: 02:34)
    test 017...OK (17 out of 369, remaining: 02:24)
    test 018...OK (18 out of 369, remaining: 02:16)
    test 019...OK (19 out of 369, remaining: 02:08)
    test 020...OK (20 out of 369, remaining: 02:19)
    test 021...OK (21 out of 369, remaining: 02:12)
    test 022...OK (22 out of 369, remaining: 02:06)
    test 023...OK (23 out of 369, remaining: 02:00)
    test 024...OK (24 out of 369, remaining: 01:55)
    test 025...OK (25 out of 369, remaining: 01:50)
    test 026...OK (26 out of 369, remaining: 01:45)
    test 027...OK (27 out of 369, remaining: 01:41)
    test 028...OK (28 out of 369, remaining: 01:37)
    test 029...OK (29 out of 369, remaining: 01:57)
    test 030...OK (30 out of 369, remaining: 03:23)
    test 031...OK (31 out of 369, remaining: 03:16)
    test 032...OK (32 out of 369, remaining: 03:09)
    test 033...OK (33 out of 369, remaining: 03:23)
    test 034...OK (34 out of 369, remaining: 03:26)
    test 036...OK (35 out of 369, remaining: 03:20)
    test 037...OK (36 out of 369, remaining: 03:14)
    test 038...OK (37 out of 369, remaining: 03:08)
    test 039...OK (38 out of 369, remaining: 03:20)
    test 040...OK (39 out of 369, remaining: 03:14)
    test 041...OK (40 out of 369, remaining: 03:09)
    test 042...OK (41 out of 369, remaining: 03:04)
    test 043...OK (42 out of 369, remaining: 02:59)
    test 044...OK (43 out of 369, remaining: 02:54)
    test 045...OK (44 out of 369, remaining: 02:49)
    test 046...OK (45 out of 369, remaining: 02:45)
    test 047...OK (46 out of 369, remaining: 02:41)
    test 048...OK (47 out of 369, remaining: 02:37)
    test 049...OK (48 out of 369, remaining: 02:40)
    test 050...OK (49 out of 369, remaining: 02:36)
    test 051...OK (50 out of 369, remaining: 02:33)
    test 052...OK (51 out of 369, remaining: 02:29)
    test 053...OK (52 out of 369, remaining: 02:26)
    test 054...OK (53 out of 369, remaining: 02:23)
    test 055...OK (54 out of 369, remaining: 02:20)
    test 056...OK (55 out of 369, remaining: 02:17)
    test 057...OK (56 out of 369, remaining: 02:14)
    test 058...OK (57 out of 369, remaining: 02:22)
    test 059...OK (58 out of 369, remaining: 02:19)
    test 060...OK (59 out of 369, remaining: 02:27)
    test 061...OK (60 out of 369, remaining: 02:24)
    test 062...OK (61 out of 369, remaining: 02:21)
    test 063...OK (62 out of 369, remaining: 02:18)
    test 064...OK (63 out of 369, remaining: 02:20)
    test 065...OK (64 out of 369, remaining: 02:18)
    test 066...OK (65 out of 369, remaining: 02:15)
    test 067...OK (66 out of 369, remaining: 02:13)
    test 068...OK (67 out of 369, remaining: 02:10)
    test 069...OK (68 out of 369, remaining: 02:08)
    test 070...OK (69 out of 369, remaining: 02:06)
    test 071...OK (70 out of 369, remaining: 02:12)
    test 072...OK (71 out of 369, remaining: 02:10)
    test 073...OK (72 out of 369, remaining: 02:07)
    test 074...OK (73 out of 369, remaining: 02:05)
    test 075...OK (74 out of 369, remaining: 02:03)
    test 076...OK (75 out of 369, remaining: 02:01)
    test 077...OK (76 out of 369, remaining: 01:59)
    test 078...OK (77 out of 369, remaining: 02:01)
    test 079...OK (78 out of 369, remaining: 01:59)
    test 080...OK (79 out of 369, remaining: 01:57)
    test 081...OK (80 out of 369, remaining: 01:55)
    test 082...OK (81 out of 369, remaining: 01:53)
    test 083...OK (82 out of 369, remaining: 01:52)
    test 084...OK (83 out of 369, remaining: 01:50)
    test 085...OK (84 out of 369, remaining: 01:48)
    test 086...OK (85 out of 369, remaining: 01:46)
    test 087...OK (86 out of 369, remaining: 01:45)
    test 088...OK (87 out of 369, remaining: 01:46)
    test 089...OK (88 out of 369, remaining: 01:45)
    test 090...OK (89 out of 369, remaining: 01:43)
    test 091...OK (90 out of 369, remaining: 01:42)
    test 092...OK (91 out of 369, remaining: 01:40)
    test 093...OK (92 out of 369, remaining: 01:39)
    test 094...OK (93 out of 369, remaining: 01:40)
    test 095...OK (94 out of 369, remaining: 01:39)
    test 097...OK (95 out of 369, remaining: 01:38)
    test 098...OK (96 out of 369, remaining: 01:39)
    test 099...OK (97 out of 369, remaining: 01:38)
    test 100...OK (98 out of 369, remaining: 01:42)
    test 101...OK (99 out of 369, remaining: 01:40)
    test 102...OK (100 out of 369, remaining: 01:39)
    test 103...OK (101 out of 369, remaining: 01:38)
    test 104...OK (102 out of 369, remaining: 01:39)
    test 105...OK (103 out of 369, remaining: 01:38)
    test 106...OK (104 out of 369, remaining: 01:36)
    test 107...OK (105 out of 369, remaining: 01:35)
    test 108...OK (106 out of 369, remaining: 01:34)
    test 109...OK (107 out of 369, remaining: 01:33)
    test 110...OK (108 out of 369, remaining: 01:31)
    test 111...OK (109 out of 369, remaining: 01:33)
    test 112...OK (110 out of 369, remaining: 01:31)
    test 113...OK (111 out of 369, remaining: 01:30)
    test 114...OK (112 out of 369, remaining: 01:29)
    test 115...OK (113 out of 369, remaining: 01:28)
    test 116...OK (114 out of 369, remaining: 01:27)
    test 117...OK (115 out of 369, remaining: 01:26)
    test 118...OK (116 out of 369, remaining: 01:25)
    test 119...OK (117 out of 369, remaining: 01:24)
    test 120...OK (118 out of 369, remaining: 01:22)
    test 121...OK (119 out of 369, remaining: 01:24)
    test 122...OK (120 out of 369, remaining: 01:23)
    test 123...OK (121 out of 369, remaining: 01:21)
    test 124...OK (122 out of 369, remaining: 01:20)
    test 125...OK (123 out of 369, remaining: 01:20)
    test 126...OK (124 out of 369, remaining: 01:19)
    test 127...OK (125 out of 369, remaining: 01:18)
    test 128...OK (126 out of 369, remaining: 01:17)
    test 135...OK (132 out of 369, remaining: 01:13)
    test 136...OK (133 out of 369, remaining: 01:12)
    test 137...OK (134 out of 369, remaining: 01:11)
    test 138...OK (135 out of 369, remaining: 01:11)
    test 139...OK (136 out of 369, remaining: 01:10)
    test 140...OK (137 out of 369, remaining: 01:09)
    test 141...OK (138 out of 369, remaining: 01:08)
    test 142...OK (139 out of 369, remaining: 01:07)
    test 143...OK (140 out of 369, remaining: 01:08)
    test 144...OK (141 out of 369, remaining: 01:07)
    test 145...OK (142 out of 369, remaining: 01:07)
    test 146...OK (143 out of 369, remaining: 01:06)
    test 147...OK (144 out of 369, remaining: 01:05)
    test 148...OK (145 out of 369, remaining: 01:04)
    test 149...OK (146 out of 369, remaining: 01:04)
    test 150...OK (147 out of 369, remaining: 01:04)
    test 151...OK (148 out of 369, remaining: 01:04)
    test 152...OK (149 out of 369, remaining: 01:03)
    test 153...OK (150 out of 369, remaining: 01:02)
    test 154...OK (151 out of 369, remaining: 01:04)
    test 155...OK (152 out of 369, remaining: 01:07)
    test 156...OK (153 out of 369, remaining: 01:09)
    test 157...OK (154 out of 369, remaining: 01:08)
    test 158...OK (155 out of 369, remaining: 01:10)
    test 159...OK (156 out of 369, remaining: 01:09)
    test 160...OK (157 out of 369, remaining: 01:11)
    test 161...OK (158 out of 369, remaining: 01:10)
    test 162...OK (159 out of 369, remaining: 01:10)
    test 163...OK (160 out of 369, remaining: 01:11)
    test 164...OK (161 out of 369, remaining: 01:12)
    test 166...OK (163 out of 369, remaining: 01:13)
    test 167...OK (164 out of 369, remaining: 01:12)
    test 168...OK (165 out of 369, remaining: 01:11)
    test 169...OK (166 out of 369, remaining: 01:10)
    test 170...OK (167 out of 369, remaining: 01:10)
    test 171...OK (168 out of 369, remaining: 01:09)
    test 172...OK (169 out of 369, remaining: 01:08)
    test 173...OK (170 out of 369, remaining: 01:10)
    test 174...OK (171 out of 369, remaining: 01:09)
    test 175...OK (172 out of 369, remaining: 01:08)
    test 176...OK (173 out of 369, remaining: 01:07)
    test 177...OK (174 out of 369, remaining: 01:07)
    test 178...OK (175 out of 369, remaining: 01:06)
    test 179...OK (176 out of 369, remaining: 01:05)
    test 180...OK (177 out of 369, remaining: 01:06)
    test 181...OK (178 out of 369, remaining: 01:05)
    test 182...OK (179 out of 369, remaining: 01:04)
    test 183...OK (180 out of 369, remaining: 01:04)
    test 184...OK (181 out of 369, remaining: 01:03)
    test 185...OK (182 out of 369, remaining: 01:02)
    test 186...OK (183 out of 369, remaining: 01:03)
    test 187...OK (184 out of 369, remaining: 01:02)
    test 188...OK (185 out of 369, remaining: 01:01)
    test 189...OK (186 out of 369, remaining: 01:01)
    test 190...OK (187 out of 369, remaining: 01:03)
    test 191...OK (188 out of 369, remaining: 01:05)
    test 192...OK (189 out of 369, remaining: 01:04)
    test 193...OK (190 out of 369, remaining: 01:04)
    test 194...OK (191 out of 369, remaining: 01:03)
    test 195...OK (192 out of 369, remaining: 01:02)
    test 196...OK (193 out of 369, remaining: 01:02)
    test 197...OK (194 out of 369, remaining: 01:03)
    test 198...OK (195 out of 369, remaining: 01:03)
    test 199...OK (196 out of 369, remaining: 01:02)
    test 200...OK (197 out of 369, remaining: 01:01)
    test 201...OK (198 out of 369, remaining: 01:01)
    test 202...OK (199 out of 369, remaining: 01:00)
    test 203...OK (200 out of 369, remaining: 00:59)
    test 204...OK (201 out of 369, remaining: 00:59)
    test 205...OK (202 out of 369, remaining: 00:58)
    test 206...OK (203 out of 369, remaining: 00:58)
    test 207...OK (204 out of 369, remaining: 00:58)
    test 208...OK (205 out of 369, remaining: 00:59)
    test 209...OK (206 out of 369, remaining: 00:58)
    test 210...OK (207 out of 369, remaining: 00:57)
    test 211...OK (208 out of 369, remaining: 00:57)
    test 212...OK (209 out of 369, remaining: 00:58)
    test 213...OK (210 out of 369, remaining: 00:58)
    test 214...OK (211 out of 369, remaining: 00:57)
    test 215...OK (212 out of 369, remaining: 00:57)
    test 216...OK (213 out of 369, remaining: 00:56)
    test 217...OK (214 out of 369, remaining: 00:55)
    test 218...OK (215 out of 369, remaining: 00:56)
    test 225...OK (221 out of 369, remaining: 00:52)
    test 226...OK (222 out of 369, remaining: 00:52)
    test 227...OK (223 out of 369, remaining: 00:52)
    test 228...OK (224 out of 369, remaining: 00:51)
    test 229...OK (225 out of 369, remaining: 00:51)
    test 233...OK (226 out of 369, remaining: 00:50)
    test 234...OK (227 out of 369, remaining: 00:50)
    test 235...OK (228 out of 369, remaining: 00:49)
    test 236...OK (229 out of 369, remaining: 00:48)
    test 237...OK (230 out of 369, remaining: 00:48)
    test 238...OK (231 out of 369, remaining: 00:48)
    test 239...OK (232 out of 369, remaining: 00:47)
    test 240...OK (233 out of 369, remaining: 00:48)
    test 242...OK (235 out of 369, remaining: 00:47)
    test 243...OK (236 out of 369, remaining: 00:47)
    test 245...OK (237 out of 369, remaining: 00:46)
    test 246...OK (238 out of 369, remaining: 00:46)
    test 247...OK (239 out of 369, remaining: 00:45)
    test 248...OK (240 out of 369, remaining: 00:45)
    test 249...OK (241 out of 369, remaining: 00:44)
    test 250...OK (242 out of 369, remaining: 00:48)
    test 251...OK (243 out of 369, remaining: 00:52)
    test 252...OK (244 out of 369, remaining: 00:52)
    test 253...OK (245 out of 369, remaining: 00:51)
    test 254...OK (246 out of 369, remaining: 00:51)
    test 255...OK (247 out of 369, remaining: 00:50)
    test 256...OK (248 out of 369, remaining: 00:49)
    test 258...OK (250 out of 369, remaining: 00:49)
    test 259...OK (251 out of 369, remaining: 00:50)
    test 260...OK (252 out of 369, remaining: 00:49)
    test 261...OK (253 out of 369, remaining: 00:49)
    test 262...OK (254 out of 369, remaining: 00:48)
    test 263...OK (255 out of 369, remaining: 00:47)
    test 264...OK (256 out of 369, remaining: 00:47)
    test 265...OK (257 out of 369, remaining: 00:46)
    test 266...OK (258 out of 369, remaining: 00:46)
    test 267...OK (259 out of 369, remaining: 00:45)
    test 268...OK (260 out of 369, remaining: 00:44)
    test 269...OK (261 out of 369, remaining: 00:44)
    test 270...OK (262 out of 369, remaining: 00:44)
    test 271...OK (263 out of 369, remaining: 00:44)
    test 272...OK (264 out of 369, remaining: 00:43)
    test 273...OK (265 out of 369, remaining: 00:43)
    test 274...OK (266 out of 369, remaining: 00:42)
    test 275...OK (267 out of 369, remaining: 00:42)
    test 276...OK (268 out of 369, remaining: 00:41)
    test 277...OK (269 out of 369, remaining: 00:41)
    test 278...OK (270 out of 369, remaining: 00:41)
    test 279...OK (271 out of 369, remaining: 00:40)
    test 280...OK (272 out of 369, remaining: 00:39)
    test 281...OK (273 out of 369, remaining: 00:39)
    test 282...OK (274 out of 369, remaining: 00:39)
    test 283...OK (275 out of 369, remaining: 00:38)
    test 284...OK (276 out of 369, remaining: 00:38)
    test 285...OK (277 out of 369, remaining: 00:37)
    test 286...OK (278 out of 369, remaining: 00:38)
    test 287...OK (279 out of 369, remaining: 00:38)
    test 288...OK (280 out of 369, remaining: 00:37)
    test 290...OK (281 out of 369, remaining: 00:37)
    test 291...OK (282 out of 369, remaining: 00:36)
    test 292...OK (283 out of 369, remaining: 00:36)
    test 293...OK (284 out of 369, remaining: 00:35)
    test 294...OK (285 out of 369, remaining: 00:35)
    test 295...OK (286 out of 369, remaining: 00:34)
    test 296...OK (287 out of 369, remaining: 00:34)
    test 297...OK (288 out of 369, remaining: 00:33)
    test 298...OK (289 out of 369, remaining: 00:33)
    test 402...OK (301 out of 369, remaining: 00:27)
    test 405...OK (304 out of 369, remaining: 00:25)
    test 500...OK (309 out of 369, remaining: 00:23)
    test 501...OK (310 out of 369, remaining: 00:22)
    test 502...OK (311 out of 369, remaining: 00:22)
    test 503...OK (312 out of 369, remaining: 00:22)
    test 504...OK (313 out of 369, remaining: 00:21)
    test 505...OK (314 out of 369, remaining: 00:21)
    test 506...OK (315 out of 369, remaining: 00:20)
    test 507...OK (316 out of 369, remaining: 00:20)
    test 508...OK (317 out of 369, remaining: 00:20)
    test 510...OK (319 out of 369, remaining: 00:19)
    test 511...OK (320 out of 369, remaining: 00:18)
    test 512...OK (321 out of 369, remaining: 00:18)
    test 513...OK (322 out of 369, remaining: 00:17)
    test 514...OK (323 out of 369, remaining: 00:17)
    test 515...OK (324 out of 369, remaining: 00:17)
    test 516...OK (325 out of 369, remaining: 00:16)
    test 517...OK (326 out of 369, remaining: 00:16)
    test 518...OK (327 out of 369, remaining: 00:15)
    test 519...OK (328 out of 369, remaining: 00:15)
    test 520...OK (329 out of 369, remaining: 00:15)
    test 521...OK (330 out of 369, remaining: 00:14)
    test 522...OK (331 out of 369, remaining: 00:14)
    test 523...OK (332 out of 369, remaining: 00:13)
    test 524...OK (333 out of 369, remaining: 00:13)
    test 525...OK (334 out of 369, remaining: 00:13)
    test 526...OK (335 out of 369, remaining: 00:13)
    test 527...OK (336 out of 369, remaining: 00:13)
    test 528...OK (337 out of 369, remaining: 00:13)
    test 529...OK (338 out of 369, remaining: 00:12)
    test 530...OK (339 out of 369, remaining: 00:12)
    test 531...OK (340 out of 369, remaining: 00:12)
    test 532...OK (341 out of 369, remaining: 00:12)
    test 533...OK (342 out of 369, remaining: 00:11)
    test 534...OK (343 out of 369, remaining: 00:11)
    test 535...OK (344 out of 369, remaining: 00:11)
    test 537...OK (345 out of 369, remaining: 00:10)
    test 538...OK (346 out of 369, remaining: 00:10)
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    test 704...OK (366 out of 369, remaining: 00:01)
    test 705...OK (367 out of 369, remaining: 00:00)
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    Could not find sftp-server plugin
    RUN: failed to start the SSH server
    TESTDONE: 317 tests out of 317 reported OK: 100%
    TESTDONE: 369 tests were considered during 186 seconds.
    TESTINFO: 52 tests were skipped due to these restraints:
    TESTINFO: "curl lacks any scp support" 4 times (601, 603, 605, 607)
    TESTINFO: "Resolving 'ip6-localhost' didn't work" 1 times (241)
    TESTINFO: "curl lacks any sftp support" 11 times (600, 602, 604, 606, 608, 609, 610, 611, 612, 613, 614)
    TESTINFO: "curl lacks netrc_debug support" 6 times (130, 131, 132, 133, 134, 257)
    TESTINFO: "no stunnel" 18 times (300, 301, 302, 303, 304, 305, 306, 307, 308, 400, 401, 403, 404, 406, 407, 408, 409, 509)
    TESTINFO: "failed starting SSH server" 6 times (700, 701, 702, 703, 706, 707)
    TESTINFO: "curl lacks libz support" 5 times (220, 221, 222, 223, 224)
    TESTINFO: "curl lacks idn support" 1 times (165)
    gmake[1]: Leaving directory `/infa/curl/curl-7.16.3-20070613/tests'

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-13

    Logged In: YES
    user_id=1110
    Originator: NO

    Thanks for verifying, closing this!

     
  • Daniel Stenberg

    Daniel Stenberg - 2007-06-13
    • status: open-fixed --> closed-fixed