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>