[pgsqlclient-checkins] pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient PgDbClient.cs,1.1
Status: Inactive
Brought to you by:
carlosga_fb
From: <car...@us...> - 2003-09-15 11:56:22
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient In directory sc8-pr-cvs1:/tmp/cvs-serv4460 Modified Files: PgDbClient.cs PgStatement.cs Log Message: Changes for bettrer handling of TLS connections Index: PgDbClient.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** PgDbClient.cs 14 Sep 2003 19:14:37 -0000 1.11 --- PgDbClient.cs 15 Sep 2003 11:56:19 -0000 1.12 *************** *** 234,237 **** --- 234,245 ---- } + // Seems that in TLS mode PostgreSQL sends messages with length 0 + // if we have a packet like this we will return an empty packet in + // response + if (buffer.Length == 0) + { + return new PgResponsePacket('\0', new byte[0]{}); + } + lock (this) { *************** *** 241,244 **** --- 249,272 ---- { int length = buffer.ReadInt() - 4; + if (length > (buffer.Length - buffer.Position)) + { + PgOutputPacket w = new PgOutputPacket(); + w.Write(buffer.ReadBytes(length)); + while (true) + { + byte[] b = receive.ReadBytes(); + w.Write(b); + + if (b.Length != 0) + { + break; + } + } + + buffer.Reset(); + buffer = new PgResponsePacket(w.GetBytes()); + + w.Reset(); + } responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length)); } Index: PgStatement.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgStatement.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PgStatement.cs 20 Aug 2003 11:53:19 -0000 1.3 --- PgStatement.cs 15 Sep 2003 11:56:19 -0000 1.4 *************** *** 312,318 **** db.Flush(); ! // Receive response ! PgResponsePacket response = db.ReceiveResponsePacket(); ! processSqlPacket(response); // Update status --- 312,322 ---- db.Flush(); ! // Read BIND Complete message ! PgResponsePacket response = new PgResponsePacket(); ! while (response.Message != PgBackendCodes.BIND_COMPLETE) ! { ! response = db.ReceiveResponsePacket(); ! processSqlPacket(response); ! } // Update status |