From: Kris Jurka Date: Tue, 22 Jun 2004 09:37:03 +0000 (+0000) Subject: Close the existing socket connection when reverting to the V2 X-Git-Tag: REL7_4_4~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=15a932c50f515987ed9c7f3aacd8a6d793ee92f7;p=postgresql Close the existing socket connection when reverting to the V2 protocol, or encountering other connection failures. Laurent Sylvain --- diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java index a607eb00da..42e893ba2f 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java @@ -9,7 +9,7 @@ * Copyright (c) 2003, PostgreSQL Global Development Group * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Connection.java,v 1.27.2.2 2004/02/10 01:58:48 jurka Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Connection.java,v 1.27.2.3 2004/06/22 09:37:03 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -208,11 +208,21 @@ public abstract class AbstractJdbc1Connection implements BaseConnection throw new PSQLException ("postgresql.con.failed", PSQLState.CONNECTION_UNABLE_TO_CONNECT, e); } - //Now do the protocol work - if (haveMinimumCompatibleVersion("7.4")) { - openConnectionV3(host,port,info,database,url,d,password); - } else { - openConnectionV2(host,port,info,database,url,d,password); + try { + //Now do the protocol work + if (haveMinimumCompatibleVersion("7.4")) { + openConnectionV3(host,port,info,database,url,d,password); + } else { + openConnectionV2(host,port,info,database,url,d,password); + } + } catch (SQLException sqle) { + // if we fail to completely establish a connection, + // close down the socket to not leak resources. + try { + pgStream.close(); + } catch (IOException ioe) { } + + throw sqle; } } @@ -305,6 +315,7 @@ public abstract class AbstractJdbc1Connection implements BaseConnection //if the error length is > than 30000 we assume this is really a v2 protocol //server so try again with a v2 connection //need to create a new connection and try again + pgStream.close(); try { pgStream = new PGStream(p_host, p_port);