Daniel Gustafsson <dan...@yesql.se> writes: > Good points, it should of course be SOCK_ERRNO. The attached saves off errno > and reinstates it to avoid clobbering. Will test it on Windows in the morning > as well.
I think instead of this: + SOCK_ERRNO_SET(save_errno); you could just do this: libpq_append_conn_error(conn, "SSL SYSCALL error: %s", - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); + SOCK_STRERROR(save_errno, sebuf, sizeof(sebuf))); Although ... we're already assuming that SSL_get_error and ERR_get_error don't clobber errno. Maybe SSL_get_verify_result doesn't either. Or we could make it look like this: + SOCK_ERRNO_SET(0); ERR_clear_error(); r = SSL_connect(conn->ssl); if (r <= 0) + int save_errno = SOCK_ERRNO; int err = SSL_get_error(conn->ssl, r); unsigned long ecode; ... - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); + SOCK_STRERROR(save_errno, sebuf, sizeof(sebuf))); to remove all doubt. regards, tom lane