Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Aug 2002 17:22:13 +0200 (CEST)
From:      Martin Blapp <mb@imp.ch>
To:        <dev@porting.openoffice.org>
Cc:        <openoffice@freebsd.org>
Subject:   FreeBSD and webdav problems
Message-ID:  <20020815171253.Y17516-100000@levais.imp.ch>
In-Reply-To: <3D5BC47B.4040106@sun.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Hi all,

I see some strange behaviour here with webdav. A connection
does loop here: external/neon/rtufiles/socket.c

nsocket *sock_connect(const struct in_addr addr,
                      unsigned short int portnum)
{
    struct sockaddr_in sa;
    int fd;

    /* Create the socket */
    fd = socket(AF_INET, SOCK_STREAM, 0);
    if (fd < 0)
        return NULL;
    /* Connect the nsocket */
    sa.sin_family = AF_INET;
    sa.sin_port = htons(portnum); /* host -> net byte orders */
    sa.sin_addr = addr;
    if (connect(fd, (struct sockaddr *)&sa, sizeof(struct sockaddr_in)) < 0) {
        (void) NEON_CLOSE(fd);
        return NULL;
    }
    /* Success - return the nsocket */
    return create_sock(fd);
}

Breakpoint 1, sock_connect (addr={s_addr = 80}, portnum=80) at socket.c:703
703         fd = socket(AF_INET, SOCK_STREAM, 0);
(gdb) c
Continuing.

Breakpoint 4, 0x28bc0d4d in connect () from /usr/lib/libc_r.so.4
(gdb) c
Continuing.

Breakpoint 3, sock_close (sock=0x81db870) at socket.c:872
872         ret = NEON_CLOSE(sock->fd);
(gdb) c
Continuing.

Breakpoint 1, sock_connect (addr={s_addr = 80}, portnum=80) at socket.c:703
703         fd = socket(AF_INET, SOCK_STREAM, 0);
(gdb) c
Continuing.

Breakpoint 4, 0x28bc0d4d in connect () from /usr/lib/libc_r.so.4

(gdb) p errno
$11 = 36

connect() returns EINPROGRESS.

[EINPROGRESS]      The socket is non-blocking and the connection cannot
                   be completed immediately.  It is possible to select(2)
                   for completion by selecting the socket for writing.

This is not handled by the webdav code and so we get into
and endless loop.

How does this work on other platforms ?

Martin

Martin Blapp, <mb@imp.ch> <mbr@FreeBSD.org>
------------------------------------------------------------------
ImproWare AG, UNIXSP & ISP, Zurlindenstrasse 29, 4133 Pratteln, CH
Phone: +41 061 826 93 00: +41 61 826 93 01
PGP: <finger -l mbr@freebsd.org>
PGP Fingerprint: B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E
------------------------------------------------------------------


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-openoffice" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020815171253.Y17516-100000>