[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-14 19:14:40
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient In directory sc8-pr-cvs1:/tmp/cvs-serv550 Modified Files: PgDbClient.cs Log Message: Added change for better processing of messages received in secure connections ( TLS ) Index: PgDbClient.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PgDbClient.cs 14 Sep 2003 14:20:29 -0000 1.10 --- PgDbClient.cs 14 Sep 2003 19:14:37 -0000 1.11 *************** *** 56,59 **** --- 56,60 ---- private char transactionStatus; private TlsSession session; + private PgResponsePacket buffer; #endregion *************** *** 117,121 **** public PgDbClient() { ! parameterStatus = new Hashtable(); } --- 118,123 ---- public PgDbClient() { ! this.parameterStatus = new Hashtable(); ! this.buffer = new PgResponsePacket(); } *************** *** 225,304 **** public PgResponsePacket ReceiveResponsePacket(params bool[] sslRequest) { ! char type; ! int length; ! PgResponsePacket responsePacket = null; lock (this) { ! length = 0; ! if ((sslRequest.Length > 0 && sslRequest[0])) { ! type = receive.ReadChar(); ! return new PgResponsePacket(type, new byte[0]); } else { ! if (settings.SSL) ! { ! // TLS/SSL Application data contents ! PgResponsePacket tmpPacket = new PgResponsePacket(receive.ReadBytes()); ! ! type = tmpPacket.ReadChar(); ! length = tmpPacket.ReadInt() - 4; ! ! if (length != 0) ! { ! responsePacket = new PgResponsePacket(type, tmpPacket.ReadBytes(length)); ! } ! tmpPacket.Reset(); ! } ! else { ! type = (char)receive.ReadByte(); ! length = IPAddress.HostToNetworkOrder(receive.ReadInt32()) - 4; ! if (length != 0) ! { ! responsePacket = new PgResponsePacket(type, receive.ReadBytes(length)); ! } } ! if (length == 0) { ! responsePacket = new PgResponsePacket(type, new byte[0]); } ! switch (type) { ! case PgBackendCodes.ERROR_RESPONSE: ! { ! // Read the error message and trow the exception ! PgClientException ex = processErrorPacket(responsePacket); ! ! throw ex; ! } ! ! case PgBackendCodes.NOTICE_RESPONSE: ! { ! // Read the notice message and raise an InfoMessage event ! PgClientException ex = processErrorPacket(responsePacket); ! ! this.InfoMessage(this, new PgClientMessageEventArgs(ex)); ! } ! break; ! ! case PgBackendCodes.NOTIFICATION_RESPONSE: ! { ! processNotificationResponse(responsePacket); ! } ! break; ! ! default: ! break; } ! } ! responsePacket.Encoding = Settings.Encoding; } --- 227,280 ---- public PgResponsePacket ReceiveResponsePacket(params bool[] sslRequest) { ! PgResponsePacket responsePacket = null; ! ! if (buffer.Length == 0 || buffer.EOF) ! { ! buffer = new PgResponsePacket(receive.ReadBytes()); ! } lock (this) { ! char type = buffer.ReadChar(); ! ! if (sslRequest.Length == 0 || !sslRequest[0]) { ! int length = buffer.ReadInt() - 4; ! responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length)); } else { ! responsePacket = new PgResponsePacket(type, new byte[0]{}); ! } ! responsePacket.Encoding = Settings.Encoding; ! switch (type) ! { ! case PgBackendCodes.ERROR_RESPONSE: { ! // Read the error message and trow the exception ! PgClientException ex = processErrorPacket(responsePacket); ! throw ex; } ! case PgBackendCodes.NOTICE_RESPONSE: { ! // Read the notice message and raise an InfoMessage event ! PgClientException ex = processErrorPacket(responsePacket); ! ! this.InfoMessage(this, new PgClientMessageEventArgs(ex)); } + break; ! case PgBackendCodes.NOTIFICATION_RESPONSE: { ! processNotificationResponse(responsePacket); } ! break; ! default: ! break; ! } } |