Re: connect(2) behavior with unreacheable hosts

From: M. Warner Losh <imp_at_bsdimp.com>
Date: Sat, 12 Apr 2003 20:49:12 -0600 (MDT)
In message: <109.225ca595.2bc723f2_at_aol.com>
            BelletJr_at_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);
}
Received on Sat Apr 12 2003 - 17:49:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:03 UTC