On Jun  7 14:56, Cary Lewis via Cygwin wrote:
> Thanks very much for the reply - I will wait for Corinna's take on this as
> well - the patch shouldn't be too hard.

It's not that easy, but not too hard either:

- Windows 10 1709 and later actually support the TCP_KEEPIDLE,
  TCP_KEEPINTVL and TCP_KEEPCNT options natively, so all is fine here.

- Older OS versions require the use of a single call
  WSAIoctl(SIO_KEEPALIVE_VALS), while TCP_KEEPIDLE, TCP_KEEPINTVL and
  TCP_KEEPCNT are three distinct calls, with TCP_KEEPCNT being no-op on
  pre W10 1709.

> In fact the source code for curl in the lib/connect.c file has code to
> enable the winsock options, so hopefully that code could be helpful. I

But, here's the question:

Even if neither one of SIO_KEEPALIVE_VALS, TCP_KEEPIDLE, TCP_KEEPINTVL
and TCP_KEEPCNT are available, curl *still* uses SO_KEEPALIVE to enable
TCP keep-alive.  Given TCP keep-alive has default settings on Windows,
too (2 hours, 1 sec, 10 times), and given SO_KEEPALIVE is supported on
Cygwin as well, why isn't that sufficient?

Keep in mind that none of the above WSAIoctl/setsockopt options are
portable, only SO_KEEPALIVE is.  So why should that work on, say,
Solaris, but not on Windows?


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to