Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Jul 2014 15:49:23 +0400
From:      Dmitry Sivachenko <trtrmitya@gmail.com>
To:        freebsd-net@freebsd.org
Subject:   does setsockopt(SO_RCVTIMEO) work?
Message-ID:  <F6D31298-F070-4CB8-ADFF-243302A6CE1E@gmail.com>

next in thread | raw e-mail | index | archive | help
Hello!

I am having trouble using {g,s}etsockopt(SO_RCVTIMEO).  Consider the =
following small test program.
I expect to retrieve the value of 1 second via getsockopt call, I expect =
the following output:
tv_sec=3D1, tv_usec=3D0
But I actually get
tv_sec=3D0, tv_usec=3D0

What am I missing?=20

Thanks!

PS: on Linux it works as I expect.


#include <err.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>

int main() {
    struct timeval tv;
    int fd;
    tv.tv_sec=3D1;
    tv.tv_usec=3D0;
    fd =3D socket(PF_UNIX, SOCK_STREAM, 0);
    if (fd < 0)
        err(1, "socket");
    socklen_t len =3D sizeof(struct timeval);
    if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, len))
        err(1, "setsockopt");
    if (getsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, &len))
        err(1, "getsockopt");
    printf("tv_sec=3D%ld, tv_usec=3D%ld\n", tv.tv_sec, tv.tv_usec);
}




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F6D31298-F070-4CB8-ADFF-243302A6CE1E>