From: Kyotaro HORIGUCHI [mailto:horiguchi.kyotaro@lab.ntt.co.jp]
> + if (setsockopt(conn->sock, IPPROTO_TCP, TCP_USER_TIMEOUT,
> + (char *) &timeout, sizeof(timeout)) < 0 && errno !=
> ENOPROTOOPT)
> + {
> + char sebuf[256];
> +
> + appendPQExpBuffer(&conn->errorMessage,
> + libpq_gettext("setsockopt(TCP_USER_TIMEOUT)
> failed: %s\n"),
>
> I suppose that the reason ENOPROTOOPT is excluded from error
> condition is that the system call may fail with that errno on
> older kernels, but I don't think that that justifies ignoring the
> failure.
I think that's for the case where the modules is built on an OS that supports TCP_USER_TIMEOUT (#ifdef TCP_USER_TIMEOUT
istrue), and the module is used on an older OS that doesn't support TCP_USER_TIMEOUT. I remember I was sometimes able
todo such a thing on Linux and Solaris. If we don't have to handle such usage, I agree about removing the special
handlingof ENOTPROTO.
Regards
Takayuki Tsunakawa