Re: backtrace_on_internal_error
От
Tom Lane
Тема
Re: backtrace_on_internal_error
Дата
Msg-id
1550646.1702074585@sss.pgh.pa.us
Ответ на
Re: backtrace_on_internal_error (Andres Freund)
Список
Дерево обсуждения
backtrace_on_internal_error Peter Eisentraut <peter@eisentraut.org>
Re: backtrace_on_internal_error Nathan Bossart <nathandbossart@gmail.com>
Re: backtrace_on_internal_error Robert Haas <robertmhaas@gmail.com>
Re: backtrace_on_internal_error Nathan Bossart <nathandbossart@gmail.com>
Re: backtrace_on_internal_error Robert Haas <robertmhaas@gmail.com>
Re: backtrace_on_internal_error Matthias van de Meent <boekewurm+postgres@gmail.com>
Re: backtrace_on_internal_error Nathan Bossart <nathandbossart@gmail.com>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Robert Haas <robertmhaas@gmail.com>
Re: backtrace_on_internal_error Peter Eisentraut <peter@eisentraut.org>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Peter Eisentraut <peter@eisentraut.org>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Jelte Fennema-Nio <postgres@jeltef.nl>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Jelte Fennema-Nio <postgres@jeltef.nl>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Andres Freund <andres@anarazel.de>
Re: backtrace_on_internal_error Robert Haas <robertmhaas@gmail.com>
Re: backtrace_on_internal_error Tom Lane <tgl@sss.pgh.pa.us>
Re: backtrace_on_internal_error Peter Eisentraut <peter@eisentraut.org>
Re: backtrace_on_internal_error Robert Haas <robertmhaas@gmail.com>
Re: backtrace_on_internal_error Jelte Fennema-Nio <postgres@jeltef.nl>
Re: backtrace_on_internal_error Peter Eisentraut <peter@eisentraut.org>
Andres Freund writes:
>> I think I figured it it out. Looks like we need to translate a closed socket
>> (recvfrom() returning 0) to ECONNRESET or such.
> Seems like we should just treat errno == 0 as a reason to emit the "EOF
> detected" message?
Agreed. I think we want to do that after the initial handshake,
too, so maybe as attached.
regards, tom lane
diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c
index 6b8125695a..f0b35f08c6 100644
--- a/src/backend/libpq/be-secure-openssl.c
+++ b/src/backend/libpq/be-secure-openssl.c
@@ -460,6 +460,7 @@ aloop:
* per-thread error queue following another call to an OpenSSL I/O
* routine.
*/
+ errno = 0;
ERR_clear_error();
r = SSL_accept(port->ssl);
if (r <= 0)
@@ -496,7 +497,7 @@ aloop:
WAIT_EVENT_SSL_OPEN_SERVER);
goto aloop;
case SSL_ERROR_SYSCALL:
- if (r < 0)
+ if (r < 0 && errno != 0)
ereport(COMMERROR,
(errcode_for_socket_access(),
errmsg("could not accept SSL connection: %m")));
@@ -732,7 +733,7 @@ be_tls_read(Port *port, void *ptr, size_t len, int *waitfor)
break;
case SSL_ERROR_SYSCALL:
/* leave it to caller to ereport the value of errno */
- if (n != -1)
+ if (n != -1 || errno == 0)
{
errno = ECONNRESET;
n = -1;
В списке pgsql-hackers по дате отправления