From 165dc6fbced452e0b28ef2725575c1e4208d56c7 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Tue, 23 Mar 2010 19:15:42 +0100
Subject: [PATCH] Properly fix authentication errors.

Rev: lib/modules/Sql.pmod/pgsql.pike:1.79
---
 lib/modules/Sql.pmod/pgsql.pike | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index b790cd3cf6..e7b501092b 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()
-- 
GitLab