[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-16 12:29:45
|
Update of /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient In directory sc8-pr-cvs1:/tmp/cvs-serv15223 Modified Files: PgDbClient.cs Log Message: Added changes to read, write stuff of the TLS library: * Removed TlsReader and TlsWriter * Added TlsSocket and TlsNetworkStream * Renamed TlsSessionState as TlsSessionContext Index: PgDbClient.cs =================================================================== RCS file: /cvsroot/pgsqlclient/pgsqlclient_10/PostgreSql.Data.PgSqlClient/source/NPgClient/PgDbClient.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PgDbClient.cs 15 Sep 2003 21:33:45 -0000 1.13 --- PgDbClient.cs 16 Sep 2003 12:29:42 -0000 1.14 *************** *** 51,56 **** private int secretKey; private Hashtable parameterStatus; ! private TlsWriter send; ! private TlsReader receive; private PgConnectionParams settings; private char transactionStatus; --- 51,56 ---- private int secretKey; private Hashtable parameterStatus; ! private BinaryReader receive; ! private BinaryWriter send; private PgConnectionParams settings; private char transactionStatus; *************** *** 96,105 **** } ! public TlsReader Receive { get { return receive; } } ! public TlsWriter Send { get { return send; } --- 96,105 ---- } ! public BinaryReader Receive { get { return receive; } } ! public BinaryWriter Send { get { return send; } *************** *** 140,147 **** lock (this) { ! TlsSessionSettings tlsSettings = new TlsSessionSettings(TlsProtocol.Tls1, settings.ServerName, settings.ServerPort); session = new TlsSession(tlsSettings); ! send = session.GetWriter(); ! receive = session.GetReader(); if (settings.SSL) --- 140,156 ---- lock (this) { ! // Configure TLS Session Settings ! TlsSessionSettings tlsSettings = new TlsSessionSettings(); ! ! tlsSettings.Protocol = TlsProtocol.Tls1; ! tlsSettings.ServerName = settings.ServerName; ! tlsSettings.ServerPort = settings.ServerPort; ! ! // Create a new TLS Session session = new TlsSession(tlsSettings); ! ! // Create objects for read & write ! receive = new BinaryReader(session.NetworkStream); ! send = new BinaryWriter(session.NetworkStream); if (settings.SSL) *************** *** 155,164 **** { // Start TLS Session ! session.StartSession(); } catch (TlsException ex) { // If the exception is fatal close connection ! session.EndSession(); throw new PgClientException(ex.Message); --- 164,173 ---- { // Start TLS Session ! session.Open(); } catch (TlsException ex) { // If the exception is fatal close connection ! session.Close(); throw new PgClientException(ex.Message); *************** *** 194,198 **** catch (PgClientException ex) { ! session.EndSession(); throw ex; } --- 203,207 ---- catch (PgClientException ex) { ! session.Close(); throw ex; } *************** *** 208,212 **** // End session ! session.EndSession(); } catch (PgClientException ex) --- 217,221 ---- // End session ! session.Close(); } catch (PgClientException ex) *************** *** 237,248 **** } ! if (settings.SSL) ! { ! responsePacket = this.receiveTLSPacket(isSslRequest); ! } ! else ! { ! responsePacket = this.receiveStandardPacket(isSslRequest); ! } switch (responsePacket.Message) --- 246,250 ---- } ! responsePacket = this.receiveStandardPacket(isSslRequest); switch (responsePacket.Message) *************** *** 301,362 **** return responsePacket; - } - - private PgResponsePacket receiveTLSPacket(bool isSslRequest) - { - PgResponsePacket responsePacket = null; - if (buffer.Length == 1 || - buffer.Pending < 4 || - buffer.EOF) - { - updateBuffer(); - } - - // 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(' ', new byte[0]{}); - } - - char type = buffer.ReadChar(); - if (isSslRequest) - { - responsePacket = new PgResponsePacket(type, new byte[0]{}); - } - else - { - int length = buffer.ReadInt() - 4; - while (length > buffer.Pending) - { - this.updateBuffer(); - } - responsePacket = new PgResponsePacket(type, buffer.ReadBytes(length)); - } - responsePacket.Encoding = Settings.Encoding; - - return responsePacket; - } - - private void updateBuffer() - { - PgOutputPacket w = new PgOutputPacket(); - w.Write(buffer.ReadBytes((int)buffer.Pending)); - while (true) - { - byte[] b = receive.ReadBytes(); - w.Write(b); - - if (b.Length != 0) - { - break; - } - } - - buffer.Reset(); - buffer = new PgResponsePacket(w.GetBytes()); - - w.Reset(); } --- 303,306 ---- |