diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index b790cd3cf64204b86f7047d2504a76f05b1b1b3b..e7b501092b183a11b85275b3c952959974c39324 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -1034,7 +1034,7 @@ void destroy() { close(); } -private void reconnect(void|int force) +private int reconnect(void|int force) { Thread.MutexKey connectmtxkey; if(_c) { reconnected++; @@ -1075,12 +1075,19 @@ private void reconnect(void|int force) plugbuf[0]=_c.plugint32(len); _c.write(plugbuf); PD("%O\n",plugbuf); - _decodemsg(readyforquery); + { mixed err=catch(_decodemsg(readyforquery)); + if(err) + if(force) + return 0; + else + throw(err); + } PD("%O\n",_runtimeparameter); if(force) { lastmessage+=({sprintf("Reconnected to database %s",host_info())}); runcallback(backendpid,"_reconnect",""); } + return 1; } //! @decl void reload()