Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Apr 2003 20:49:12 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        BelletJr@aol.com
Cc:        current@freebsd.org
Subject:   Re: connect(2) behavior with unreacheable hosts
Message-ID:  <20030412.204912.76964336.imp@bsdimp.com>
In-Reply-To: <109.225ca595.2bc723f2@aol.com>
References:  <109.225ca595.2bc723f2@aol.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <109.225ca595.2bc723f2@aol.com>
            BelletJr@aol.com writes:
: Why does not connect(2) return any error when trying to connect to a host 
: unreachable because of an infinite loop in the routes? No time-out occurs and 
: the value 0 is returned by connect(2).

Hmmmmm, you are correct.  I was sure that you were nuts, but on
-current the following program returns no error at all...  Telnet
shows the same behavior.  This is clearly wrong.

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <err.h>

int main(void)
{
    int fd;
    struct in_addr addr;
    struct sockaddr_in sa;
    int flags;

    fd = socket(PF_INET, SOCK_STREAM, 0);
    inet_aton("1.2.3.4", &addr);

    sa.sin_len = sizeof(sa);
    sa.sin_family = AF_INET;
    sa.sin_port = htons(1234);
    memcpy(&sa.sin_addr, &addr, sizeof(addr));
    if (connect(fd, (struct sockaddr *) &sa, sizeof(sa)))
	err(1, "connect");
    exit(0);
}



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