Browse Source

Added basic low-level message logging, for those who has problems this might help interpret what happens.

Kenneth_aa_cp 14 years ago
parent
commit
9f22922cd9

+ 2 - 0
Renci.SshClient/Renci.SshNet/Session.NET.cs

@@ -23,6 +23,8 @@ namespace Renci.SshNet
             this._socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, socketBufferSize);
             this._socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, socketBufferSize);
 
+            this.log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 1, string.Format("Initiating connect to '{0}:{1}'.", this.ConnectionInfo.Host, this.ConnectionInfo.Port));
+
             //  Connect socket with specified timeout
             var connectResult = this._socket.BeginConnect(ep, null, null);
 

+ 19 - 0
Renci.SshClient/Renci.SshNet/Session.cs

@@ -19,6 +19,7 @@ using Renci.SshNet.Security;
 using System.Globalization;
 using Renci.SshNet.Security.Cryptography.Ciphers;
 using Renci.SshNet.Security.Cryptography;
+using System.Diagnostics;
 
 namespace Renci.SshNet
 {
@@ -27,6 +28,14 @@ namespace Renci.SshNet
     /// </summary>
     public partial class Session : IDisposable
     {
+
+        internal TraceSource log = 
+#if DEBUG
+        new TraceSource("SshNet.Logging", SourceLevels.All);
+#else
+        new TraceSource("SshNet.Logging");
+#endif
+        
         /// <summary>
         /// Specifies maximum packet size defined by the protocol.
         /// </summary>
@@ -463,6 +472,10 @@ namespace Renci.SshNet
                     //  Get server SSH version
                     var version = versionMatch.Result("${protoversion}");
 
+                    var softwareName = versionMatch.Result("${softwareversion}");
+
+                    this.log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 1, string.Format("Server version '{0}' on '{1}'.", version, softwareName));
+
                     if (!(version.Equals("2.0") || version.Equals("1.99")))
                     {
                         throw new SshConnectionException(string.Format(CultureInfo.CurrentCulture, "Server version '{0}' is not supported.", version), DisconnectReason.ProtocolVersionNotSupported);
@@ -636,6 +649,8 @@ namespace Renci.SshNet
             if (this._socket == null || !this._socket.Connected)
                 return;
 
+            this.log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 1, string.Format("SendMessage to server '{0}': '{1}'.", message.GetType().Name, message.ToString()));
+
             //  Messages can be sent by different thread so we need to synchronize it            
             var paddingMultiplier = this._clientCipher == null ? (byte)8 : (byte)this._clientCipher.BlockSize;    //    Should be recalculate base on cipher min length if cipher specified
 
@@ -1010,6 +1025,8 @@ namespace Renci.SshNet
         /// <param name="message"><see cref="DisconnectMessage"/> message.</param>
         protected virtual void OnDisconnectReceived(DisconnectMessage message)
         {
+
+            log.TraceInformation("Disconnect received.");
             if (this.DisconnectReceived != null)
             {
                 this.DisconnectReceived(this, new MessageEventArgs<DisconnectMessage>(message));
@@ -1455,6 +1472,8 @@ namespace Renci.SshNet
 
             message.Load(data);
 
+            this.log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 1, "ReceiveMessage from server: '{0}': '{1}'.", message.GetType().Name, message.ToString());
+
             return message;
         }