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;
! }
}
|