I was able to spend some time on this again. I attached two patches to this 
email:

The first patch is a cleaned up version of my previous patch. I think I 
addressed
all feedback on the previous version in that patch (e.g. removed windows code, 
fixed formatting).

The second patch is a new one, it implements honouring of the connect_timeout 
connection option in PQcancel. This patch requires the first patch to also be 
applied,
but since it seemed fairly separate and the code is not trivial I didn't want 
the first
patch to be blocked on this.

Finally, I would love it if once these fixes are merged the would also be 
backpatched to 
previous versions of libpq. Does that seem possible? As far as I can tell it 
would be fine, 
since it doesn't really change any of the public APIs. The only change is that 
the pg_cancel 
struct now has a few additional fields. But since that struct is defined in 
libpq-int.h, so that 
struct should not be used by users of libpq directly, right?.

Attachment: 0001-Use-timeout-socket-options-for-cancel-connections.patch
Description: 0001-Use-timeout-socket-options-for-cancel-connections.patch

Attachment: 0002-Honor-connect_timeout-when-connecting-with-PQcancel.patch
Description: 0002-Honor-connect_timeout-when-connecting-with-PQcancel.patch

Reply via email to