Ver código fonte

Fix and add XML comments

olegkap_cp 12 anos atrás
pai
commit
358b08905f
62 arquivos alterados com 429 adições e 226 exclusões
  1. 1 1
      Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj
  2. 1 1
      Renci.SshClient/Renci.SshNet.Silverlight/Renci.SshNet.Silverlight.csproj
  3. 1 1
      Renci.SshClient/Renci.SshNet.Silverlight5/Renci.SshNet.Silverlight5.csproj
  4. 1 40
      Renci.SshClient/Renci.SshNet.Tests.NET35/Renci.SshNet.Tests.NET35.csproj
  5. 1 1
      Renci.SshClient/Renci.SshNet.WindowsPhone/Renci.SshNet.WindowsPhone.csproj
  6. 1 1
      Renci.SshClient/Renci.SshNet.WindowsPhone8/Renci.SshNet.WindowsPhone8.csproj
  7. 0 16
      Renci.SshClient/Renci.SshNet.sln
  8. 1 1
      Renci.SshClient/Renci.SshNet/AuthenticationMethod.cs
  9. 1 1
      Renci.SshClient/Renci.SshNet/Common/ASCIIEncoding.cs
  10. 2 1
      Renci.SshClient/Renci.SshNet/Common/AsyncResult.cs
  11. 3 3
      Renci.SshClient/Renci.SshNet/Common/BigInteger.cs
  12. 1 1
      Renci.SshClient/Renci.SshNet/Common/DerData.cs
  13. 1 1
      Renci.SshClient/Renci.SshNet/Common/Extensions.cs
  14. 3 3
      Renci.SshClient/Renci.SshNet/Common/PipeStream.cs
  15. 3 3
      Renci.SshClient/Renci.SshNet/Common/SshData.cs
  16. 7 1
      Renci.SshClient/Renci.SshNet/Compression/ZlibStream.cs
  17. 1 1
      Renci.SshClient/Renci.SshNet/ConnectionInfo.cs
  18. 1 1
      Renci.SshClient/Renci.SshNet/KeyboardInteractiveAuthenticationMethod.cs
  19. 1 1
      Renci.SshClient/Renci.SshNet/Messages/Message.cs
  20. 23 4
      Renci.SshClient/Renci.SshNet/NetConfClient.cs
  21. 4 2
      Renci.SshClient/Renci.SshNet/NoneAuthenticationMethod.cs
  22. 7 1
      Renci.SshClient/Renci.SshNet/PasswordAuthenticationMethod.cs
  23. 7 7
      Renci.SshClient/Renci.SshNet/PasswordConnectionInfo.cs
  24. 3 1
      Renci.SshClient/Renci.SshNet/PrivateKeyAuthenticationMethod.cs
  25. 9 6
      Renci.SshClient/Renci.SshNet/PrivateKeyFile.cs
  26. 1 1
      Renci.SshClient/Renci.SshNet/Renci.SshNet.csproj
  27. 2 2
      Renci.SshClient/Renci.SshNet/ScpClient.cs
  28. 4 2
      Renci.SshClient/Renci.SshNet/Security/CertificateHostAlgorithm.cs
  29. 10 10
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Cipher.cs
  30. 7 3
      Renci.SshClient/Renci.SshNet/Security/Cryptography/CipherDigitalSignature.cs
  31. 1 1
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/AesCipher.cs
  32. 8 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Arc4Cipher.cs
  33. 2 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/BlowfishCipher.cs
  34. 1 1
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/CipherPadding.cs
  35. 6 6
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/DesCipher.cs
  36. 4 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Paddings/PKCS5Padding.cs
  37. 4 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Paddings/PKCS7Padding.cs
  38. 5 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/RsaCipher.cs
  39. 2 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/DigitalSignature.cs
  40. 10 3
      Renci.SshClient/Renci.SshNet/Security/Cryptography/DsaDigitalSignature.cs
  41. 1 1
      Renci.SshClient/Renci.SshNet/Security/Cryptography/DsaKey.cs
  42. 12 9
      Renci.SshClient/Renci.SshNet/Security/Cryptography/HMAC.cs
  43. 4 2
      Renci.SshClient/Renci.SshNet/Security/Cryptography/Key.cs
  44. 3 1
      Renci.SshClient/Renci.SshNet/Security/Cryptography/RsaDigitalSignature.cs
  45. 1 1
      Renci.SshClient/Renci.SshNet/Security/Cryptography/StreamCipher.cs
  46. 2 2
      Renci.SshClient/Renci.SshNet/Security/HostAlgorithm.cs
  47. 6 6
      Renci.SshClient/Renci.SshNet/Security/KeyExchange.cs
  48. 6 0
      Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroup14Sha1.cs
  49. 6 0
      Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroup1Sha1.cs
  50. 6 0
      Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroupSha1.cs
  51. 6 2
      Renci.SshClient/Renci.SshNet/Security/KeyHostAlgorithm.cs
  52. 2 1
      Renci.SshClient/Renci.SshNet/Session.cs
  53. 80 0
      Renci.SshClient/Renci.SshNet/Sftp/SftpFileSystemInformation.cs
  54. 1 1
      Renci.SshClient/Renci.SshNet/Sftp/SftpMessage.cs
  55. 2 2
      Renci.SshClient/Renci.SshNet/Sftp/SftpSession.cs
  56. 1 1
      Renci.SshClient/Renci.SshNet/Sftp/SftpSynchronizeDirectoriesAsyncResult.cs
  57. 27 0
      Renci.SshClient/Renci.SshNet/SftpClient.NET.cs
  58. 48 33
      Renci.SshClient/Renci.SshNet/SftpClient.cs
  59. 20 5
      Renci.SshClient/Renci.SshNet/ShellStream.cs
  60. 31 16
      Renci.SshClient/Renci.SshNet/SshClient.cs
  61. 2 1
      Renci.SshClient/Renci.SshNet/SshCommand.cs
  62. 11 1
      Renci.SshClient/Renci.SshNet/SubsystemSession.cs

+ 1 - 1
Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj

@@ -845,7 +845,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <ProjectExtensions>
     <VisualStudio>
-      <UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
+      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 1
Renci.SshClient/Renci.SshNet.Silverlight/Renci.SshNet.Silverlight.csproj

@@ -797,7 +797,7 @@
       <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
         <SilverlightProjectProperties />
       </FlavorProperties>
-      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
+      <UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 1
Renci.SshClient/Renci.SshNet.Silverlight5/Renci.SshNet.Silverlight5.csproj

@@ -807,7 +807,7 @@
       <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
         <SilverlightProjectProperties />
       </FlavorProperties>
-      <UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
+      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 40
Renci.SshClient/Renci.SshNet.Tests.NET35/Renci.SshNet.Tests.NET35.csproj

@@ -48,15 +48,6 @@
     </CodeAnalysisDependentAssemblyPaths>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="..\Renci.SshNet.Tests\BlockCipherTest.cs">
-      <Link>BlockCipherTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\CipherDigitalSignatureTest.cs">
-      <Link>CipherDigitalSignatureTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\CipherTest.cs">
-      <Link>CipherTest.cs</Link>
-    </Compile>
     <Compile Include="..\Renci.SshNet.Tests\Classes\AuthenticationMethodTest.cs">
       <Link>Classes\AuthenticationMethodTest.cs</Link>
     </Compile>
@@ -297,9 +288,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs">
       <Link>Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs</Link>
     </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelRequestMessageTest.cs">
-      <Link>Classes\Messages\Connection\ChannelRequestMessageTest.cs</Link>
-    </Compile>
     <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelRequest\BreakRequestInfoTest.cs">
       <Link>Classes\Messages\Connection\ChannelRequest\BreakRequestInfoTest.cs</Link>
     </Compile>
@@ -678,9 +666,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileStreamTest.cs">
       <Link>Classes\Sftp\SftpFileStreamTest.cs</Link>
     </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileSystemInformationTest.cs">
-      <Link>Classes\Sftp\SftpFileSystemInformationTest.cs</Link>
-    </Compile>
     <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileTest.cs">
       <Link>Classes\Sftp\SftpFileTest.cs</Link>
     </Compile>
@@ -711,30 +696,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Common\TestBase.cs">
       <Link>Common\TestBase.cs</Link>
     </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\DigitalSignatureTest.cs">
-      <Link>DigitalSignatureTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\DsaDigitalSignatureTest.cs">
-      <Link>DsaDigitalSignatureTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\HMacTest.cs">
-      <Link>HMacTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\MD5HashTest.cs">
-      <Link>MD5HashTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\RsaDigitalSignatureTest.cs">
-      <Link>RsaDigitalSignatureTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\SHA1HashTest.cs">
-      <Link>SHA1HashTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\SHA256HashTest.cs">
-      <Link>SHA256HashTest.cs</Link>
-    </Compile>
-    <Compile Include="..\Renci.SshNet.Tests\SymmetricCipherTest.cs">
-      <Link>SymmetricCipherTest.cs</Link>
-    </Compile>
     <Compile Include="Classes\ForwardedPortRemote.NET35.cs" />
     <Compile Include="Classes\ForwardedPortLocal.NET35.cs" />
     <Compile Include="Classes\SshCommandTest.NET35.cs" />
@@ -762,7 +723,7 @@
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ProjectExtensions>
     <VisualStudio>
-      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="c45379b9-17b1-4e89-bc2e-6d41726413e8" />
+      <UserProperties ProjectLinkReference="c45379b9-17b1-4e89-bc2e-6d41726413e8" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 1
Renci.SshClient/Renci.SshNet.WindowsPhone/Renci.SshNet.WindowsPhone.csproj

@@ -797,7 +797,7 @@
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
   <ProjectExtensions>
     <VisualStudio>
-      <UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
+      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 1
Renci.SshClient/Renci.SshNet.WindowsPhone8/Renci.SshNet.WindowsPhone8.csproj

@@ -840,7 +840,7 @@
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
   <ProjectExtensions>
     <VisualStudio>
-      <UserProperties ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" />
+      <UserProperties ProjectLinkReference="2f5f8c90-0bd1-424f-997c-7bc6280919d1" ProjectLinkerExcludeFilter="\\?desktop(\\.*)?$;\\?silverlight(\\.*)?$;\.desktop;\.silverlight;\.xaml;^service references(\\.*)?$;\.clientconfig;^web references(\\.*)?$" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 0 - 16
Renci.SshClient/Renci.SshNet.sln

@@ -24,8 +24,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Renci.SshNet.Silverlight5",
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Renci.SshNet.WindowsPhone8", "Renci.SshNet.WindowsPhone8\Renci.SshNet.WindowsPhone8.csproj", "{4A6CA785-1C8A-47FE-98C0-30C675A9328B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{EFAF2072-A01F-4970-878A-AAD40326AFD2}"
-EndProject
 Global
 	GlobalSection(TestCaseManagementSettings) = postSolution
 		CategoryFile = Renci.SshNet1.vsmdi
@@ -155,20 +153,6 @@ Global
 		{4A6CA785-1C8A-47FE-98C0-30C675A9328B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{4A6CA785-1C8A-47FE-98C0-30C675A9328B}.Release|x64.ActiveCfg = Release|Any CPU
 		{4A6CA785-1C8A-47FE-98C0-30C675A9328B}.Release|x86.ActiveCfg = Release|Any CPU
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|ARM.ActiveCfg = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|x64.ActiveCfg = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|x86.ActiveCfg = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Debug|x86.Build.0 = Debug|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|Any CPU.ActiveCfg = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|ARM.ActiveCfg = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|Mixed Platforms.Build.0 = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|x64.ActiveCfg = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|x86.ActiveCfg = Release|x86
-		{EFAF2072-A01F-4970-878A-AAD40326AFD2}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 1 - 1
Renci.SshClient/Renci.SshNet/AuthenticationMethod.cs

@@ -48,7 +48,7 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>Result of authentication  process.</returns>
         public abstract AuthenticationResult Authenticate(Session session);
     }
 }

+ 1 - 1
Renci.SshClient/Renci.SshNet/Common/ASCIIEncoding.cs

@@ -6,7 +6,7 @@ using System.Text;
 namespace Renci.SshNet.Common
 {
     /// <summary>
-    /// 
+    /// Implementation of ASCII Encoding
     /// </summary>
     public class ASCIIEncoding : Encoding
     {

+ 2 - 1
Renci.SshClient/Renci.SshNet/Common/AsyncResult.cs

@@ -155,6 +155,7 @@ namespace Renci.SshNet.Common
     /// <summary>
     /// Base class to encapsulates the results of an asynchronous operation that returns result.
     /// </summary>
+    /// <typeparam name="TResult">The type of the result.</typeparam>
     public abstract class AsyncResult<TResult> : AsyncResult
     {
         // Field set when operation completes
@@ -186,7 +187,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// Waits until the asynchronous operation completes, and then returns the value generated by the asynchronous operation. 
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Invocation result</returns>
         new public TResult EndInvoke()
         {
             base.EndInvoke(); // Wait until operation has completed 

+ 3 - 3
Renci.SshClient/Renci.SshNet/Common/BigInteger.cs

@@ -1967,7 +1967,7 @@ namespace Renci.SshNet.Common
         /// Generates random BigInteger number
         /// </summary>
         /// <param name="bitLength">Length of random number in bits.</param>
-        /// <returns></returns>
+        /// <returns>Big random number.</returns>
         public static BigInteger Random(int bitLength)
         {
             var bytesArray = new byte[bitLength / 8 + (((bitLength % 8) > 0) ? 1 : 0)];
@@ -2328,7 +2328,7 @@ namespace Renci.SshNet.Common
         /// </summary>
         /// <param name="bi">The bi.</param>
         /// <param name="modulus">The modulus.</param>
-        /// <returns></returns>
+        /// <returns>Modulus inverted number.</returns>
         public static BigInteger ModInverse(BigInteger bi, BigInteger modulus)
         {
             BigInteger a = modulus, b = bi % modulus;
@@ -2399,7 +2399,7 @@ namespace Renci.SshNet.Common
         /// <param name="value">A string that contains a number to convert.</param>
         /// <param name="style">A bitwise combination of the enumeration values that specify the permitted format of value.</param>
         /// <param name="provider">An object that provides culture-specific formatting information about value.</param>
-        /// <returns></returns>
+        /// <returns>Parsed <see cref="BigInteger"/> number</returns>
         public static BigInteger Parse(string value, System.Globalization.NumberStyles style, IFormatProvider provider)
         {
             Exception ex;

+ 1 - 1
Renci.SshClient/Renci.SshNet/Common/DerData.cs

@@ -83,7 +83,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// Encodes written data as DER byte array.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>DER Encoded array.</returns>
         public byte[] Encode()
         {
             var length = this._data.Count();

+ 1 - 1
Renci.SshClient/Renci.SshNet/Common/Extensions.cs

@@ -99,7 +99,7 @@ namespace Renci.SshNet
         /// Trims the leading zero from bytes array.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Data without leading zeros.</returns>
         internal static IEnumerable<byte> TrimLeadingZero(this IEnumerable<byte> data)
         {
             bool leadingZero = true;

+ 3 - 3
Renci.SshClient/Renci.SshNet/Common/PipeStream.cs

@@ -192,10 +192,10 @@
         }
 
         /// <summary>
-        /// Returns true if there are 
+        /// Returns true if there are
         /// </summary>
-        /// <param name="count"></param>
-        /// <returns></returns>
+        /// <param name="count">The count.</param>
+        /// <returns><c>True</c> if data available; otherwise<c>false</c>.</returns>
         private bool ReadAvailable(int count)
         {
             return (this.Length >= count || this._isFlushed) &&

+ 3 - 3
Renci.SshClient/Renci.SshNet/Common/SshData.cs

@@ -59,7 +59,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// Gets data bytes array
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Byte array representation of data structure.</returns>
         public virtual byte[] GetBytes()
         {
             this._data = new List<byte>();
@@ -278,7 +278,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// Reads next name-list data type from internal buffer.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>String array or read data..</returns>
         protected string[] ReadNamesList()
         {
             var namesList = this.ReadString();
@@ -288,7 +288,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// Reads next extension-pair data type from internal buffer.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Extensions pair dictionary.</returns>
         protected IDictionary<string, string> ReadExtensionPair()
         {
             Dictionary<string, string> result = new Dictionary<string, string>();

+ 7 - 1
Renci.SshClient/Renci.SshNet/Compression/ZlibStream.cs

@@ -7,7 +7,7 @@ using System.IO;
 namespace Renci.SshNet.Compression
 {
     /// <summary>
-    /// 
+    /// Implements Zlib compression algorithm.
     /// </summary>
     public class ZlibStream
     {
@@ -35,6 +35,12 @@ namespace Renci.SshNet.Compression
             //this._baseStream.FlushMode = Ionic.Zlib.FlushType.Partial;
         }
 
+        /// <summary>
+        /// Writes the specified buffer.
+        /// </summary>
+        /// <param name="buffer">The buffer.</param>
+        /// <param name="offset">The offset.</param>
+        /// <param name="count">The count.</param>
         public void Write(byte[] buffer, int offset, int count)
         {
             //this._baseStream.Write(buffer, offset, count);

+ 1 - 1
Renci.SshClient/Renci.SshNet/ConnectionInfo.cs

@@ -227,7 +227,7 @@ namespace Renci.SshNet
         /// <exception cref="System.ArgumentException">host</exception>
         /// <exception cref="System.ArgumentOutOfRangeException">proxyPort</exception>
         /// <exception cref="ArgumentException"><paramref name="host" /> is invalid, or <paramref name="username" /> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port" /> is not within <see cref="IPEndPoint.MinPort" /> and <see cref="IPEndPoint.MaxPort" />.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port" /> is not within <see cref="F:System.Net.IPEndPoint.MinPort" /> and <see cref="F:System.Net.IPEndPoint.MaxPort" />.</exception>
         /// <exception cref="ArgumentException"><paramref name="host" /> is invalid, or <paramref name="username" /> is null or contains whitespace characters.</exception>
         public ConnectionInfo(string host, int port, string username, ProxyTypes proxyType, string proxyHost, int proxyPort, string proxyUsername, string proxyPassword, params AuthenticationMethod[] authenticationMethods)
         {

+ 1 - 1
Renci.SshClient/Renci.SshNet/KeyboardInteractiveAuthenticationMethod.cs

@@ -52,7 +52,7 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>Result of authentication  process.</returns>
         public override AuthenticationResult Authenticate(Session session)
         {
             this._session = session;

+ 1 - 1
Renci.SshClient/Renci.SshNet/Messages/Message.cs

@@ -27,7 +27,7 @@ namespace Renci.SshNet.Messages
         /// <summary>
         /// Gets data bytes array
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Byte array representation of the message</returns>
         public override byte[] GetBytes()
         {
             var messageAttribute = this.GetType().GetCustomAttributes(typeof(MessageAttribute), true).SingleOrDefault() as MessageAttribute;

+ 23 - 4
Renci.SshClient/Renci.SshNet/NetConfClient.cs

@@ -15,7 +15,7 @@ namespace Renci.SshNet
 {
     //  TODO:   Please help with documentation here, as I don't know the details, specially for the methods not documented.
     /// <summary>
-    /// 
+    /// Contains operation for working with NetConf server.
     /// </summary>
     public partial class NetConfClient : BaseClient
     {
@@ -55,7 +55,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, or <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public NetConfClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -85,7 +85,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, -or- <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public NetConfClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, keyFiles))
@@ -134,9 +134,19 @@ namespace Renci.SshNet
             }
         }
 
+        /// <summary>
+        /// Gets or sets a value indicating whether [automatic message id handling].
+        /// </summary>
+        /// <value>
+        /// <c>true</c> if [automatic message id handling]; otherwise, <c>false</c>.
+        /// </value>
         public bool AutomaticMessageIdHandling { get; set; }
 
-        
+        /// <summary>
+        /// Sends the receive RPC.
+        /// </summary>
+        /// <param name="rpc">The RPC.</param>
+        /// <returns>Reply message to RPC request</returns>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         public XmlDocument SendReceiveRpc(XmlDocument rpc)
         {
@@ -144,6 +154,11 @@ namespace Renci.SshNet
             return this._netConfSession.SendReceiveRpc(rpc, this.AutomaticMessageIdHandling);
         }
 
+        /// <summary>
+        /// Sends the receive RPC.
+        /// </summary>
+        /// <param name="xml">The XML.</param>
+        /// <returns>Reply message to RPC request</returns>
         public XmlDocument SendReceiveRpc(string xml)
         {
             var rpc = new XmlDocument();
@@ -151,6 +166,10 @@ namespace Renci.SshNet
             return SendReceiveRpc(rpc);
         }
 
+        /// <summary>
+        /// Sends the close RPC.
+        /// </summary>
+        /// <returns>Reply message to closing RPC request</returns>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         public XmlDocument SendCloseRpc()
         {

+ 4 - 2
Renci.SshClient/Renci.SshNet/NoneAuthenticationMethod.cs

@@ -40,8 +40,10 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// </summary>
         /// <param name="session">The session.</param>
-        /// <returns></returns>
-        /// <exception cref="ArgumentNullException"><paramref name="session"/> is null.</exception>
+        /// <returns>
+        /// Result of authentication  process.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException"><paramref name="session" /> is null.</exception>
         public override AuthenticationResult Authenticate(Session session)
         {
             if (session == null)

+ 7 - 1
Renci.SshClient/Renci.SshNet/PasswordAuthenticationMethod.cs

@@ -73,9 +73,15 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Result of authentication  process.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException"><paramref name="session" /> is null.</exception>
         public override AuthenticationResult Authenticate(Session session)
         {
+            if (session == null)
+                throw new ArgumentNullException("session");
+
             this._session = session;
 
             session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;

+ 7 - 7
Renci.SshClient/Renci.SshNet/PasswordConnectionInfo.cs

@@ -10,8 +10,8 @@ namespace Renci.SshNet
     /// Provides connection information when password authentication method is used
     /// </summary>
     /// <remarks>
-    ///     Connect to the server using PasswordConnectionInfo object
-    ///     <code source="..\Examples\PasswordConnectionInfo.cs" region="ConnectUsingPasswordConnectionInfo" language="C#" title="Connect using PasswordConnectionInfo object" />
+    /// Connect to the server using PasswordConnectionInfo object
+    /// <code source="..\Examples\PasswordConnectionInfo.cs" region="ConnectUsingPasswordConnectionInfo" language="C#" title="Connect using PasswordConnectionInfo object" />
     /// </remarks>
     public class PasswordConnectionInfo : ConnectionInfo, IDisposable
     {
@@ -45,7 +45,7 @@ namespace Renci.SshNet
         /// <param name="password">Connection password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, or <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="f:IPEndPoint.MinPort"/> and <see cref="f:IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
         public PasswordConnectionInfo(string host, int port, string username, string password)
             : this(host, port, username, Encoding.UTF8.GetBytes(password), ProxyTypes.None, string.Empty, 0, string.Empty, string.Empty)
         {
@@ -140,15 +140,15 @@ namespace Renci.SshNet
         }
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="PasswordConnectionInfo"/> class.
+        /// Initializes a new instance of the <see cref="PasswordConnectionInfo" /> class.
         /// </summary>
         /// <param name="host">Connection host.</param>
         /// <param name="port">Connection port.</param>
         /// <param name="username">Connection username.</param>
         /// <param name="password">Connection password.</param>
-        /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</exception>
-        /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, or <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="f:IPEndPoint.MinPort"/> and <see cref="f:IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="password" /> is null.</exception>
+        /// <exception cref="ArgumentException"><paramref name="host" /> is invalid, or <paramref name="username" /> is null or contains whitespace characters.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port" /> is not within <see cref="F:System.Net.IPEndPoint.MinPort" /> and <see cref="F:System.Net.IPEndPoint.MaxPort" />.</exception>
         public PasswordConnectionInfo(string host, int port, string username, byte[] password)
             : this(host, port, username, password, ProxyTypes.None, string.Empty, 0, string.Empty, string.Empty)
         {

+ 3 - 1
Renci.SshClient/Renci.SshNet/PrivateKeyAuthenticationMethod.cs

@@ -52,7 +52,9 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Result of authentication  process.
+        /// </returns>
         public override AuthenticationResult Authenticate(Session session)
         {
             session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;

+ 9 - 6
Renci.SshClient/Renci.SshNet/PrivateKeyFile.cs

@@ -207,13 +207,15 @@ namespace Renci.SshNet
                         throw new SshException(string.Format("Cipher method '{0}' is not supported.", cipherName));
                     }
 
+                    //  TODO:   Create two specific data types to avoid using SshDataReader class
+
                     reader = new SshDataReader(keyData);
 
                     var decryptedLength = reader.ReadUInt32();
 
                     if (decryptedLength + 4 != blobSize)
                         throw new SshException("Invalid passphrase.");
-
+                    
                     if (keyType == "if-modn{sign{rsa-pkcs1-sha1},encrypt{rsa-pkcs1v2-oaep}}")
                     {
                         var exponent = reader.ReadBigIntWithBits();//e
@@ -282,8 +284,9 @@ namespace Renci.SshNet
         /// <param name="cipherData">Encrypted data.</param>
         /// <param name="passPhrase">Decryption pass phrase.</param>
         /// <param name="binarySalt">Decryption binary salt.</param>
-        /// <returns></returns>
-        /// <exception cref="ArgumentNullException"><paramref name="cipherInfo"/>, <paramref name="cipherData"/>, <paramref name="passPhrase"/> or <paramref name="binarySalt"/> is null.</exception>
+        /// <returns>Decrypted byte array.</returns>
+        /// <exception cref="System.ArgumentNullException">cipherInfo</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="cipherInfo" />, <paramref name="cipherData" />, <paramref name="passPhrase" /> or <paramref name="binarySalt" /> is null.</exception>
         private static byte[] DecryptKey(CipherInfo cipherInfo, byte[] cipherData, string passPhrase, byte[] binarySalt)
         {
             if (cipherInfo == null)
@@ -384,17 +387,17 @@ namespace Renci.SshNet
                 this.LoadBytes(data);
             }
 
-            public UInt32 ReadUInt32()
+            public new UInt32 ReadUInt32()
             {
                 return base.ReadUInt32();
             }
 
-            public string ReadString()
+            public new string ReadString()
             {
                 return base.ReadString();
             }
 
-            public byte[] ReadBytes(int length)
+            public new byte[] ReadBytes(int length)
             {
                 return base.ReadBytes(length);
             }

+ 1 - 1
Renci.SshClient/Renci.SshNet/Renci.SshNet.csproj

@@ -20,7 +20,7 @@
     <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
+    <WarningLevel>0</WarningLevel>
     <DocumentationFile>bin\Debug\Renci.SshNet.xml</DocumentationFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

+ 2 - 2
Renci.SshClient/Renci.SshNet/ScpClient.cs

@@ -84,7 +84,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, or <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public ScpClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -114,7 +114,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, -or- <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public ScpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, keyFiles))

+ 4 - 2
Renci.SshClient/Renci.SshNet/Security/CertificateHostAlgorithm.cs

@@ -32,7 +32,8 @@ namespace Renci.SshNet.Security
         /// Signs the specified data.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Signed data.</returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Sign(byte[] data)
         {
             throw new NotImplementedException();
@@ -43,7 +44,8 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns><c>True</c> if signature was successfully verified; otherwise <c>false</c>.</returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override bool VerifySignature(byte[] data, byte[] signature)
         {
             throw new NotImplementedException();

+ 10 - 10
Renci.SshClient/Renci.SshNet/Security/Cryptography/Cipher.cs

@@ -14,14 +14,14 @@ namespace Renci.SshNet.Security.Cryptography
         /// Encrypts the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Encrypted data.</returns>
         public abstract byte[] Encrypt(byte[] input);
 
         /// <summary>
         /// Decrypts the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Decrypted data.</returns>
         public abstract byte[] Decrypt(byte[] input);
 
         #region Packing functions
@@ -57,7 +57,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts big endian bytes into number.
         /// </summary>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="Int32" />.</returns>
         protected static uint BigEndianToUInt32(byte[] buffer)
         {
             uint n = (uint)buffer[0] << 24;
@@ -72,7 +72,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt32" />.</returns>
         protected static uint BigEndianToUInt32(byte[] buffer, int offset)
         {
             uint n = (uint)buffer[offset] << 24;
@@ -86,7 +86,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts big endian bytes into number.
         /// </summary>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong BigEndianToUInt64(byte[] buffer)
         {
             uint hi = BigEndianToUInt32(buffer);
@@ -99,7 +99,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong BigEndianToUInt64(byte[] buffer, int offset)
         {
             uint hi = BigEndianToUInt32(buffer, offset);
@@ -161,7 +161,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts little endian bytes into number.
         /// </summary>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt32" />.</returns>
         protected static uint LittleEndianToUInt32(byte[] buffer)
         {
             uint n = (uint)buffer[0];
@@ -176,7 +176,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="Int32" />.</returns>
         protected static uint LittleEndianToUInt32(byte[] buffer, int offset)
         {
             uint n = (uint)buffer[offset];
@@ -190,7 +190,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts little endian bytes into number.
         /// </summary>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong LittleEndianToUInt64(byte[] buffer)
         {
             uint lo = LittleEndianToUInt32(buffer);
@@ -203,7 +203,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong LittleEndianToUInt64(byte[] buffer, int offset)
         {
             uint lo = LittleEndianToUInt32(buffer, offset);

+ 7 - 3
Renci.SshClient/Renci.SshNet/Security/Cryptography/CipherDigitalSignature.cs

@@ -35,7 +35,9 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns>
+        ///   <c>True</c> if signature was successfully verified; otherwise <c>false</c>.
+        /// </returns>
         public override bool Verify(byte[] input, byte[] signature)
         {
             var encryptedSignature = this._cipher.Decrypt(signature);
@@ -54,7 +56,9 @@ namespace Renci.SshNet.Security.Cryptography
         /// Creates the signature.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Signed input data.
+        /// </returns>
         public override byte[] Sign(byte[] input)
         {
             //  Calculate hash value
@@ -70,7 +74,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Hashes the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Hashed data.</returns>
         protected abstract byte[] Hash(byte[] input);
 
         /// <summary>

+ 1 - 1
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/AesCipher.cs

@@ -7,7 +7,7 @@ using System.Globalization;
 namespace Renci.SshNet.Security.Cryptography.Ciphers
 {
     /// <summary>
-    /// 
+    /// AES cipher implementation.
     /// </summary>
     public class AesCipher : BlockCipher
     {

+ 8 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Arc4Cipher.cs

@@ -57,7 +57,10 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Encrypts the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Encrypted data.
+        /// </returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Encrypt(byte[] input)
         {
             throw new NotImplementedException();
@@ -67,7 +70,10 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Decrypts the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Decrypted data.
+        /// </returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Decrypt(byte[] input)
         {
             throw new NotImplementedException();

+ 2 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/BlowfishCipher.cs

@@ -6,8 +6,8 @@ using System.Text;
 namespace Renci.SshNet.Security.Cryptography.Ciphers
 {
 	/// <summary>
-	/// 
-	/// </summary>
+    /// Blowfish cipher implementation.
+    /// </summary>
 	public class BlowfishCipher : BlockCipher
 	{
 		#region Static reference tables

+ 1 - 1
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/CipherPadding.cs

@@ -15,7 +15,7 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// </summary>
         /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Padded data array.</returns>
         public abstract byte[] Pad(int blockSize, byte[] input);
     }
 }

+ 6 - 6
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/DesCipher.cs

@@ -288,12 +288,12 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
 			return this.BlockSize;
 		}
 
-		/// <summary>
-		/// Generates the working key.
-		/// </summary>
-		/// <param name="encrypting">if set to <c>true</c> [encrypting].</param>
-		/// <param name="key">The key.</param>
-		/// <returns></returns>
+        /// <summary>
+        /// Generates the working key.
+        /// </summary>
+        /// <param name="encrypting">if set to <c>true</c> [encrypting].</param>
+        /// <param name="key">The key.</param>
+        /// <returns>Generated working key.</returns>
 		protected int[] GenerateWorkingKey(bool encrypting, byte[] key)
 		{
 			this.ValidateKey();

+ 4 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Paddings/PKCS5Padding.cs

@@ -13,9 +13,11 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers.Paddings
         /// <summary>
         /// Transforms the specified input.
         /// </summary>
-        /// <param name="blockSize"></param>
+        /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Padded data array.
+        /// </returns>
         public override byte[] Pad(int blockSize, byte[] input)
         {
             var numOfPaddedBytes = blockSize - (input.Length % blockSize);

+ 4 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/Paddings/PKCS7Padding.cs

@@ -13,9 +13,11 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers.Paddings
         /// <summary>
         /// Transforms the specified input.
         /// </summary>
-        /// <param name="blockSize"></param>
+        /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Padded data array.
+        /// </returns>
         public override byte[] Pad(int blockSize, byte[] input)
         {
             var numOfPaddedBytes = blockSize - (input.Length % blockSize);

+ 5 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Ciphers/RsaCipher.cs

@@ -36,7 +36,7 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Encrypts the specified data.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Encrypted data.</returns>
         public override byte[] Encrypt(byte[] data)
         {
             //  Calculate signature
@@ -59,7 +59,10 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Decrypts the specified data.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Decrypted data.
+        /// </returns>
+        /// <exception cref="System.NotSupportedException">Only block type 01 or 02 are supported.</exception>
         /// <exception cref="NotSupportedException">Thrown when decrypted block type is not supported.</exception>
         public override byte[] Decrypt(byte[] data)
         {

+ 2 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/DigitalSignature.cs

@@ -16,14 +16,14 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns><c>True</c> if signature was successfully verified; otherwise <c>false</c>.</returns>
         public abstract bool Verify(byte[] input, byte[] signature);
 
         /// <summary>
         /// Creates the signature.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Signed input data.</returns>
         public abstract byte[] Sign(byte[] input);
     }
 }

+ 10 - 3
Renci.SshClient/Renci.SshNet/Security/Cryptography/DsaDigitalSignature.cs

@@ -20,9 +20,10 @@ namespace Renci.SshNet.Security.Cryptography
         private DsaKey _key;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="DsaDigitalSignature"/> class.
+        /// Initializes a new instance of the <see cref="DsaDigitalSignature" /> class.
         /// </summary>
         /// <param name="key">The DSA key.</param>
+        /// <exception cref="System.ArgumentNullException">key</exception>
         public DsaDigitalSignature(DsaKey key)
         {
             if (key == null)
@@ -38,7 +39,10 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns>
+        ///   <c>True</c> if signature was successfully verified; otherwise <c>false</c>.
+        /// </returns>
+        /// <exception cref="System.InvalidOperationException">Invalid signature.</exception>
         public override bool Verify(byte[] input, byte[] signature)
         {
             var hashInput = this._hash.ComputeHash(input);
@@ -91,7 +95,10 @@ namespace Renci.SshNet.Security.Cryptography
         /// Creates the signature.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Signed input data.
+        /// </returns>
+        /// <exception cref="SshException">Invalid DSA key.</exception>
         public override byte[] Sign(byte[] input)
         {
             var hashInput = this._hash.ComputeHash(input);

+ 1 - 1
Renci.SshClient/Renci.SshNet/Security/Cryptography/DsaKey.cs

@@ -154,7 +154,7 @@ namespace Renci.SshNet.Security
             this._privateKey[2] = g;
             this._privateKey[3] = y;
             this._privateKey[4] = x;
-        }        
+        }
 
         #region IDisposable Members
 

+ 12 - 9
Renci.SshClient/Renci.SshNet/Security/Cryptography/HMAC.cs

@@ -9,7 +9,7 @@ namespace Renci.SshNet.Security.Cryptography
     /// <summary>
     /// Provides HMAC algorithm implementation.
     /// </summary>
-    /// <typeparam name="T"></typeparam>
+    /// <typeparam name="T">Class that implements <see cref="T:System.Security.Cryptography.HashAlgorithm" />.</typeparam>
     public class HMac<T> : KeyedHashAlgorithm where T : HashAlgorithm, new()
     {
         private HashAlgorithm _hash;
@@ -49,8 +49,9 @@ namespace Renci.SshNet.Security.Cryptography
         }
 
         /// <summary>
-        /// 
+        /// Gets or sets the key to use in the hash algorithm.
         /// </summary>
+        /// <returns>The key to use in the hash algorithm.</returns>
         public override byte[] Key
         {
             get
@@ -64,7 +65,7 @@ namespace Renci.SshNet.Security.Cryptography
         }
 
         /// <summary>
-        /// 
+        /// Initializes an implementation of the <see cref="T:System.Security.Cryptography.HashAlgorithm" /> class.
         /// </summary>
         public override void Initialize()
         {
@@ -72,11 +73,11 @@ namespace Renci.SshNet.Security.Cryptography
         }
 
         /// <summary>
-        /// 
+        /// Hashes the core.
         /// </summary>
-        /// <param name="rgb"></param>
-        /// <param name="ib"></param>
-        /// <param name="cb"></param>
+        /// <param name="rgb">The RGB.</param>
+        /// <param name="ib">The ib.</param>
+        /// <param name="cb">The cb.</param>
         protected override void HashCore(byte[] rgb, int ib, int cb)
         {
             if (!this._isHashing)
@@ -88,9 +89,11 @@ namespace Renci.SshNet.Security.Cryptography
         }
 
         /// <summary>
-        /// 
+        /// Finalizes the hash computation after the last data is processed by the cryptographic stream object.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>
+        /// The computed hash code.
+        /// </returns>
         protected override byte[] HashFinal()
         {
             if (!this._isHashing)

+ 4 - 2
Renci.SshClient/Renci.SshNet/Security/Cryptography/Key.cs

@@ -72,7 +72,9 @@ namespace Renci.SshNet.Security
         /// Signs the specified data with the key.
         /// </summary>
         /// <param name="data">The data to sign.</param>
-        /// <returns>Signed data.</returns>
+        /// <returns>
+        /// Signed data.
+        /// </returns>
         public byte[] Sign(byte[] data)
         {
             return this.DigitalSignature.Sign(data);
@@ -83,7 +85,7 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// <param name="data">The data to verify.</param>
         /// <param name="signature">The signature to verify against.</param>
-        /// <returns></returns>
+        /// <returns><c>True</c> is signature was successfully verifies; otherwise <c>false</c>.</returns>
         public bool VerifySignature(byte[] data, byte[] signature)
         {
             return this.DigitalSignature.Verify(data, signature);

+ 3 - 1
Renci.SshClient/Renci.SshNet/Security/Cryptography/RsaDigitalSignature.cs

@@ -29,7 +29,9 @@ namespace Renci.SshNet.Security.Cryptography
         /// Hashes the specified input.
         /// </summary>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Hashed data.
+        /// </returns>
         protected override byte[] Hash(byte[] input)
         {
             return this._hash.ComputeHash(input);

+ 1 - 1
Renci.SshClient/Renci.SshNet/Security/Cryptography/StreamCipher.cs

@@ -6,7 +6,7 @@ using System.Text;
 namespace Renci.SshNet.Security.Cryptography
 {
     /// <summary>
-    /// 
+    /// Base class of stream cipher algorithms.
     /// </summary>
     public abstract class StreamCipher : SymmetricCipher
     {

+ 2 - 2
Renci.SshClient/Renci.SshNet/Security/HostAlgorithm.cs

@@ -35,7 +35,7 @@ namespace Renci.SshNet.Security
         /// Signs the specified data.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Signed data.</returns>
         public abstract byte[] Sign(byte[] data);
 
         /// <summary>
@@ -43,7 +43,7 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns><c>True</c> is signature was successfully verifies; otherwise <c>false</c>.</returns>
         public abstract bool VerifySignature(byte[] data, byte[] signature);
     }
 }

+ 6 - 6
Renci.SshClient/Renci.SshNet/Security/KeyExchange.cs

@@ -177,7 +177,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the server side cipher to use.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Server cipher.</returns>
         public BlockCipher CreateServerCipher()
         {
             //  Resolve Session ID
@@ -198,7 +198,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the client side cipher to use.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Client cipher.</returns>
         public BlockCipher CreateClientCipher()
         {
             //  Resolve Session ID
@@ -219,7 +219,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the server side hash algorithm to use.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Hash algorithm</returns>
         public HashAlgorithm CreateServerHash()
         {
             //  Resolve Session ID
@@ -232,7 +232,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the client side hash algorithm to use.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Hash algorithm</returns>
         public HashAlgorithm CreateClientHash()
         {
             //  Resolve Session ID
@@ -245,7 +245,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the compression algorithm to use to deflate data.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Compression method.</returns>
         public Compressor CreateCompressor()
         {
             if (this._compressionType == null)
@@ -261,7 +261,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// Creates the compression algorithm to use to inflate data.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Compression method.</returns>
         public Compressor CreateDecompressor()
         {
             if (this._compressionType == null)

+ 6 - 0
Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroup14Sha1.cs

@@ -22,6 +22,12 @@ namespace Renci.SshNet.Security
             get { return "diffie-hellman-group14-sha1"; }
         }
 
+        /// <summary>
+        /// Gets the group prime.
+        /// </summary>
+        /// <value>
+        /// The group prime.
+        /// </value>
         public override BigInteger GroupPrime
         {
             get

+ 6 - 0
Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroup1Sha1.cs

@@ -22,6 +22,12 @@ namespace Renci.SshNet.Security
             get { return "diffie-hellman-group1-sha1"; }
         }
 
+        /// <summary>
+        /// Gets the group prime.
+        /// </summary>
+        /// <value>
+        /// The group prime.
+        /// </value>
         public override BigInteger GroupPrime
         {
             get

+ 6 - 0
Renci.SshClient/Renci.SshNet/Security/KeyExchangeDiffieHellmanGroupSha1.cs

@@ -14,6 +14,12 @@ namespace Renci.SshNet.Security
     /// </summary>
     public abstract class KeyExchangeDiffieHellmanGroupSha1 : KeyExchangeDiffieHellman
     {
+        /// <summary>
+        /// Gets the group prime.
+        /// </summary>
+        /// <value>
+        /// The group prime.
+        /// </value>
         public abstract BigInteger GroupPrime { get; }
 
         /// <summary>

+ 6 - 2
Renci.SshClient/Renci.SshNet/Security/KeyHostAlgorithm.cs

@@ -60,7 +60,9 @@ namespace Renci.SshNet.Security
         /// Signs the specified data.
         /// </summary>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Signed data.
+        /// </returns>
         public override byte[] Sign(byte[] data)
         {
             return new SignatureKeyData(this.Name, this.Key.Sign(data)).GetBytes().ToArray();
@@ -71,7 +73,9 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="signature">The signature.</param>
-        /// <returns></returns>
+        /// <returns>
+        ///   <c>True</c> is signature was successfully verifies; otherwise <c>false</c>.
+        /// </returns>
         public override bool VerifySignature(byte[] data, byte[] signature)
         {
             var signatureData = new SignatureKeyData();

+ 2 - 1
Renci.SshClient/Renci.SshNet/Session.cs

@@ -791,7 +791,8 @@ namespace Renci.SshNet
         /// <summary>
         /// Receives the message from the server.
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Incoming SSH message.</returns>
+        /// <exception cref="SshConnectionException"></exception>
         private Message ReceiveMessage()
         {
             if (!this._socket.Connected)

+ 80 - 0
Renci.SshClient/Renci.SshNet/Sftp/SftpFileSystemInformation.cs

@@ -11,34 +11,114 @@
 
         private const ulong SSH_FXE_STATVFS_ST_NOSUID = 0x2;
 
+        /// <summary>
+        /// Gets the size of the block.
+        /// </summary>
+        /// <value>
+        /// The size of the block.
+        /// </value>
         public ulong BlockSize { get; private set; }
 
+        /// <summary>
+        /// Gets the total blocks.
+        /// </summary>
+        /// <value>
+        /// The total blocks.
+        /// </value>
         public ulong TotalBlocks { get; private set; }
 
+        /// <summary>
+        /// Gets the free blocks.
+        /// </summary>
+        /// <value>
+        /// The free blocks.
+        /// </value>
         public ulong FreeBlocks { get; private set; }
 
+        /// <summary>
+        /// Gets the available blocks.
+        /// </summary>
+        /// <value>
+        /// The available blocks.
+        /// </value>
         public ulong AvailableBlocks { get; private set; }
 
+        /// <summary>
+        /// Gets the total nodes.
+        /// </summary>
+        /// <value>
+        /// The total nodes.
+        /// </value>
         public ulong TotalNodes { get; private set; }
 
+        /// <summary>
+        /// Gets the free nodes.
+        /// </summary>
+        /// <value>
+        /// The free nodes.
+        /// </value>
         public ulong FreeNodes { get; private set; }
 
+        /// <summary>
+        /// Gets the available nodes.
+        /// </summary>
+        /// <value>
+        /// The available nodes.
+        /// </value>
         public ulong AvailableNodes { get; private set; }
 
+        /// <summary>
+        /// Gets the sid.
+        /// </summary>
+        /// <value>
+        /// The sid.
+        /// </value>
         public ulong Sid { get; private set; }
 
+        /// <summary>
+        /// Gets a value indicating whether this instance is read only.
+        /// </summary>
+        /// <value>
+        /// <c>true</c> if this instance is read only; otherwise, <c>false</c>.
+        /// </value>
         public bool IsReadOnly
         {
             get { return (_flag & SSH_FXE_STATVFS_ST_RDONLY) == SSH_FXE_STATVFS_ST_RDONLY; }
         }
 
+        /// <summary>
+        /// Gets a value indicating whether [supports set uid].
+        /// </summary>
+        /// <value>
+        ///   <c>true</c> if [supports set uid]; otherwise, <c>false</c>.
+        /// </value>
         public bool SupportsSetUid
         {
             get { return (_flag & SSH_FXE_STATVFS_ST_NOSUID) == 0; }
         }
 
+        /// <summary>
+        /// Gets the max name lenght.
+        /// </summary>
+        /// <value>
+        /// The max name lenght.
+        /// </value>
         public ulong MaxNameLenght { get; private set; }
 
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SftpFileSytemInformation" /> class.
+        /// </summary>
+        /// <param name="bsize">The bsize.</param>
+        /// <param name="frsize">The frsize.</param>
+        /// <param name="blocks">The blocks.</param>
+        /// <param name="bfree">The bfree.</param>
+        /// <param name="bavail">The bavail.</param>
+        /// <param name="files">The files.</param>
+        /// <param name="ffree">The ffree.</param>
+        /// <param name="favail">The favail.</param>
+        /// <param name="sid">The sid.</param>
+        /// <param name="flag">The flag.</param>
+        /// <param name="namemax">The namemax.</param>
         internal SftpFileSytemInformation(ulong bsize, ulong frsize, ulong blocks, ulong bfree, ulong bavail, ulong files, ulong ffree, ulong favail, ulong sid, ulong flag, ulong namemax)
         {
             this.BlockSize = frsize;

+ 1 - 1
Renci.SshClient/Renci.SshNet/Sftp/SftpMessage.cs

@@ -9,7 +9,7 @@ namespace Renci.SshNet.Sftp
 {
     internal abstract class SftpMessage : SshData
     {
-        public new static SftpMessage Load(uint protocolVersion, byte[] data)
+        public static SftpMessage Load(uint protocolVersion, byte[] data)
         {
             var messageType = (SftpMessageTypes)data.FirstOrDefault();
 

+ 2 - 2
Renci.SshClient/Renci.SshNet/Sftp/SftpSession.cs

@@ -268,7 +268,7 @@ namespace Renci.SshNet.Sftp
         /// <param name="path">The path.</param>
         /// <param name="flags">The flags.</param>
         /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</param>
-        /// <returns></returns>
+        /// <returns>File handle.</returns>
         internal byte[] RequestOpen(string path, Flags flags, bool nullOnError = false)
         {
             byte[] handle = null;
@@ -526,7 +526,7 @@ namespace Renci.SshNet.Sftp
         /// </summary>
         /// <param name="path">The path.</param>
         /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</param>
-        /// <returns></returns>
+        /// <returns>File handle.</returns>
         internal byte[] RequestOpenDir(string path, bool nullOnError = false)
         {
             byte[] handle = null;

+ 1 - 1
Renci.SshClient/Renci.SshNet/Sftp/SftpSynchronizeDirectoriesAsyncResult.cs

@@ -18,7 +18,7 @@ namespace Renci.SshNet.Sftp
         public int FilesRead { get; private set; }
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="SftpListDirectoryAsyncResult"/> class.
+        /// Initializes a new instance of the <see cref="SftpListDirectoryAsyncResult" /> class.
         /// </summary>
         /// <param name="asyncCallback">The async callback.</param>
         /// <param name="state">The state.</param>

+ 27 - 0
Renci.SshClient/Renci.SshNet/SftpClient.NET.cs

@@ -18,15 +18,36 @@ namespace Renci.SshNet
     {
         #region SynchronizeDirectories
 
+        /// <summary>
+        /// Synchronizes the directories.
+        /// </summary>
+        /// <param name="sourcePath">The source path.</param>
+        /// <param name="destinationPath">The destination path.</param>
+        /// <param name="searchPattern">The search pattern.</param>
+        /// <returns>List of uploaded files.</returns>
         public IEnumerable<FileInfo> SynchronizeDirectories(string sourcePath, string destinationPath, string searchPattern)
         {
             return InternalSynchronizeDirectories(sourcePath, destinationPath, searchPattern, null);
         }
 
+        /// <summary>
+        /// Begins the synchronize directories.
+        /// </summary>
+        /// <param name="sourcePath">The source path.</param>
+        /// <param name="destinationPath">The destination path.</param>
+        /// <param name="searchPattern">The search pattern.</param>
+        /// <param name="asyncCallback">The async callback.</param>
+        /// <param name="state">The state.</param>
+        /// <returns>
+        /// An <see cref="System.IAsyncResult" /> that represents the asynchronous directory synchronization.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">sourceDir</exception>
+        /// <exception cref="System.ArgumentException">destDir</exception>
         public IAsyncResult BeginSynchronizeDirectories(string sourcePath, string destinationPath, string searchPattern, AsyncCallback asyncCallback, object state)
         {
             if (sourcePath == null)
                 throw new ArgumentNullException("sourceDir");
+
             if (destinationPath.IsNullOrWhiteSpace())
                 throw new ArgumentException("destDir");
 
@@ -52,6 +73,12 @@ namespace Renci.SshNet
             return asyncResult;
         }
 
+        /// <summary>
+        /// Ends the synchronize directories.
+        /// </summary>
+        /// <param name="asyncResult">The async result.</param>
+        /// <returns>List of uploaded files.</returns>
+        /// <exception cref="System.ArgumentException">Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.</exception>
         public IEnumerable<FileInfo> EndSynchronizeDirectories(IAsyncResult asyncResult)
         {
             var ar = asyncResult as SftpSynchronizeDirectoriesAsyncResult;

+ 48 - 33
Renci.SshClient/Renci.SshNet/SftpClient.cs

@@ -76,7 +76,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is <b>null</b>.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid. <para>-or-</para> <paramref name="username"/> is <b>null</b> or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SftpClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -106,7 +106,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is <b>null</b>.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid. <para>-or-</para> <paramref name="username"/> is nu<b>null</b>ll or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SftpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, keyFiles))
@@ -137,15 +137,15 @@ namespace Renci.SshNet
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="SftpPermissionDeniedException">Permission to change directory denied by remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
         /// <exception cref="SftpPathNotFoundException">The path in <paramref name="path"/> was not found on the remote host.</exception>
-        /// <exception cref="SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void ChangeDirectory(string path)
         {
             if (path == null)
                 throw new ArgumentNullException("path");
-
+            
             //  Ensure that connection is established.
             this.EnsureConnection();
-
+            
             this._sftpSession.ChangeDirectory(path);
         }
 
@@ -158,7 +158,7 @@ namespace Renci.SshNet
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="SftpPermissionDeniedException">Permission to change permission on the path(s) was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
         /// <exception cref="SftpPathNotFoundException">The path in <paramref name="path"/> was not found on the remote host.</exception>
-        /// <exception cref="SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void ChangePermissions(string path, short mode)
         {
             var file = this.Get(path);
@@ -173,7 +173,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to create the directory was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void CreateDirectory(string path)
         {
             if (path.IsNullOrWhiteSpace())
@@ -194,7 +194,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to delete the directory was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void DeleteDirectory(string path)
         {
             if (path.IsNullOrWhiteSpace())
@@ -215,7 +215,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to delete the file was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void DeleteFile(string path)
         {
             if (path.IsNullOrWhiteSpace())
@@ -237,7 +237,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentNullException"><paramref name="oldPath"/> is <b>null</b>. <para>-or-</para> or <paramref name="newPath"/> is <b>null</b>.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to rename the file was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void RenameFile(string oldPath, string newPath)
         {
             this.RenameFile(oldPath, newPath, false);
@@ -253,7 +253,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentNullException"><paramref name="oldPath" /> is <b>null</b>. <para>-or-</para> or <paramref name="newPath" /> is <b>null</b>.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to rename the file was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         public void RenameFile(string oldPath, string newPath, bool isPosix)
         {
             if (oldPath == null)
@@ -287,7 +287,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b>. <para>-or-</para> <paramref name="linkPath"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to create the symbolic link was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public void SymbolicLink(string path, string linkPath)
         {
             if (path.IsNullOrWhiteSpace())
@@ -317,7 +317,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentNullException"><paramref name="path" /> is <b>null</b>.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to list the contents of the directory was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         public IEnumerable<SftpFile> ListDirectory(string path, Action<int> listCallback = null)
         {
             return InternalListDirectory(path, listCallback);
@@ -385,9 +385,10 @@ namespace Renci.SshNet
         /// Gets reference to remote file or directory.
         /// </summary>
         /// <param name="path">The path.</param>
-        /// <returns></returns>
+        /// <returns>Reference to <see cref="Renci.SshNet.Sftp.SftpFile"/> file object.</returns>
+        /// <exception cref="System.ArgumentNullException">path</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
-        /// <exception cref="ArgumentNullException"><paramref name="path"/> is <b>null</b>.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="path" /> is <b>null</b>.</exception>
         public SftpFile Get(string path)
         {
             if (path == null)
@@ -411,7 +412,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to perform the operation was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message"/> is the message from the remote host.</exception>
         public bool Exists(string path)
         {
             if (path.IsNullOrWhiteSpace())
@@ -451,7 +452,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to perform the operation was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         /// <remarks>
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
@@ -477,7 +478,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to perform the operation was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         /// <remarks>
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
@@ -545,7 +546,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to upload the file was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         /// <remarks>
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
@@ -565,7 +566,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to upload the file was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message" /> is the message from the remote host.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
         /// <remarks>
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
@@ -588,13 +589,18 @@ namespace Renci.SshNet
         /// <param name="path">Remote file path.</param>
         /// <param name="asyncCallback">The method to be called when the asynchronous write operation is completed.</param>
         /// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests.</param>
-        /// <returns>An <see cref="IAsyncResult"/> that references the asynchronous operation.</returns>
-        /// <exception cref="ArgumentNullException"><paramref name="input"/> is <b>null</b>.</exception>
-        /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
+        /// <param name="uploadCallback">The upload callback.</param>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
+        /// <exception cref="ArgumentNullException"><paramref name="input" /> is <b>null</b>.</exception>
+        /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to list the contents of the directory was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
-        /// <remarks>Method calls made by this method to <paramref name="input"/>, may under certain conditions result in exceptions thrown by the stream.</remarks>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
+        /// <remarks>
+        /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
+        /// </remarks>
         public IAsyncResult BeginUploadFile(Stream input, string path, AsyncCallback asyncCallback, object state, Action<ulong> uploadCallback = null)
         {
             return this.BeginUploadFile(input, path, true, asyncCallback, state, uploadCallback);
@@ -608,13 +614,20 @@ namespace Renci.SshNet
         /// <param name="canOverride">if set to <c>true</c> then existing file will be overwritten.</param>
         /// <param name="asyncCallback">The method to be called when the asynchronous write operation is completed.</param>
         /// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests.</param>
-        /// <returns>An <see cref="IAsyncResult"/> that references the asynchronous operation.</returns>
-        /// <exception cref="ArgumentNullException"><paramref name="input"/> is <b>null</b>.</exception>
-        /// <exception cref="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
+        /// <param name="uploadCallback">The upload callback.</param>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">input</exception>
+        /// <exception cref="System.ArgumentException">path</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="input" /> is <b>null</b>.</exception>
+        /// <exception cref="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="Renci.SshNet.Common.SftpPermissionDeniedException">Permission to list the contents of the directory was denied by the remote host. <para>-or-</para> A SSH command was denied by the server.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">A SSH error where <see cref="P:SshException.Message"/> is the message from the remote host.</exception>
-        /// <remarks>Method calls made by this method to <paramref name="input"/>, may under certain conditions result in exceptions thrown by the stream.</remarks>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">A SSH error where <see cref="P:System.Exception.Message" /> is the message from the remote host.</exception>
+        /// <remarks>
+        /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
+        /// </remarks>
         public IAsyncResult BeginUploadFile(Stream input, string path, bool canOverride, AsyncCallback asyncCallback, object state, Action<ulong> uploadCallback = null)
         {
             if (input == null)
@@ -665,7 +678,8 @@ namespace Renci.SshNet
         /// Ends an asynchronous uploading the steam into remote file.
         /// </summary>
         /// <param name="asyncResult">The pending asynchronous SFTP request.</param>
-        /// <exception cref="ArgumentException">The IAsyncResult object (<paramref name="asyncResult"/>) did not come from the corresponding async method on this type. <para>-or-</para> EndExecute was called multiple times with the same IAsyncResult.</exception>
+        /// <exception cref="System.ArgumentException">Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.</exception>
+        /// <exception cref="ArgumentException">The IAsyncResult object (<paramref name="asyncResult" />) did not come from the corresponding async method on this type. <para>-or-</para> EndExecute was called multiple times with the same IAsyncResult.</exception>
         public void EndUploadFile(IAsyncResult asyncResult)
         {
             var ar = asyncResult as SftpUploadAsyncResult;
@@ -681,9 +695,10 @@ namespace Renci.SshNet
         /// Gets status using statvfs@openssh.com request.
         /// </summary>
         /// <param name="path">The path.</param>
-        /// <returns></returns>
+        /// <returns>Reference to <see cref="Renci.SshNet.Sftp.SftpFileSytemInformation"/> object that contains file status information.</returns>
+        /// <exception cref="System.ArgumentNullException">path</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
-        /// <exception cref="ArgumentNullException"><paramref name="path"/> is <b>null</b>.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="path" /> is <b>null</b>.</exception>
         public SftpFileSytemInformation GetStatus(string path)
         {
             if (path == null)

+ 20 - 5
Renci.SshClient/Renci.SshNet/ShellStream.cs

@@ -314,7 +314,9 @@ namespace Renci.SshNet
         /// Begins the expect.
         /// </summary>
         /// <param name="expectActions">The expect actions.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
         public IAsyncResult BeginExpect(params ExpectAction[] expectActions)
         {
             return this.BeginExpect(TimeSpan.Zero, null, null, expectActions);
@@ -324,9 +326,10 @@ namespace Renci.SshNet
         /// Begins the expect.
         /// </summary>
         /// <param name="callback">The callback.</param>
-        /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
         public IAsyncResult BeginExpect(AsyncCallback callback, params ExpectAction[] expectActions)
         {
             return this.BeginExpect(TimeSpan.Zero, callback, null, expectActions);
@@ -338,7 +341,9 @@ namespace Renci.SshNet
         /// <param name="callback">The callback.</param>
         /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
         public IAsyncResult BeginExpect(AsyncCallback callback, object state, params ExpectAction[] expectActions)
         {
             return this.BeginExpect(TimeSpan.Zero, callback, state, expectActions);
@@ -351,7 +356,9 @@ namespace Renci.SshNet
         /// <param name="callback">The callback.</param>
         /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// An <see cref="IAsyncResult" /> that references the asynchronous operation.
+        /// </returns>
         public IAsyncResult BeginExpect(TimeSpan timeout, AsyncCallback callback, object state, params ExpectAction[] expectActions)
         {
             var text = string.Empty;
@@ -461,7 +468,9 @@ namespace Renci.SshNet
         /// </summary>
         /// <param name="text">The text to expect.</param>
         /// <param name="timeout">Time to wait for input.</param>
+        /// <returns>
         /// Text available in the shell that ends with expected text, if the specified time elapsed returns null.
+        /// </returns>
         public string Expect(string text, TimeSpan timeout)
         {
             return this.Expect(new Regex(Regex.Escape(text)), timeout);
@@ -637,6 +646,12 @@ namespace Renci.SshNet
                 this._channel = null;
             }
 
+            if (this._dataReceived != null)
+            {
+                this._dataReceived.Dispose();
+                this._dataReceived = null;
+            }
+
             if (this._session != null)
             {
                 this._session.Disconnected -= new EventHandler<EventArgs>(Session_Disconnected);

+ 31 - 16
Renci.SshClient/Renci.SshNet/SshClient.cs

@@ -12,7 +12,7 @@ namespace Renci.SshNet
     /// Provides client connection to SSH server.
     /// </summary>
     public class SshClient : BaseClient
-   { 
+    {
         /// <summary>
         /// Holds the list of forwarded ports
         /// </summary>
@@ -39,8 +39,8 @@ namespace Renci.SshNet
         #region Constructors
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="SshClient"/> class.
-        /// </summar>y
+        /// Initializes a new instance of the <see cref="SshClient" /> class.
+        /// </summary>
         /// <param name="connectionInfo">The connection info.</param>
         /// <example>
         ///     Connect to the server using PasswordConnectionInfo object
@@ -61,7 +61,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, or <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "C2A000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SshClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -95,7 +95,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <exception cref="ArgumentException"><paramref name="host"/> is invalid, -or- <paramref name="username"/> is null or contains whitespace characters.</exception>
-        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="port"/> is not within <see cref="F:System.Net.IPEndPoint.MinPort"/> and <see cref="System.Net.IPEndPoint.MaxPort"/>.</exception>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SshClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, keyFiles))
@@ -212,7 +212,7 @@ namespace Renci.SshNet
         /// <returns>Returns an instance of <see cref="SshCommand"/> with execution results.</returns>
         /// <remarks>This method internally uses asynchronous calls.</remarks>
         /// <exception cref="ArgumentException">CommandText property is empty.</exception>
-        /// <exception cref="Renci.SshNet.Common.SshException">Invalid Operation - An existing channel was used to execute this command.</exception>
+        /// <exception cref="T:Renci.SshNet.Common.SshException">Invalid Operation - An existing channel was used to execute this command.</exception>
         /// <exception cref="InvalidOperationException">Asynchronous operation is already in progress.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="commandText"/> is null.</exception>
@@ -236,7 +236,9 @@ namespace Renci.SshNet
         /// <param name="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="bufferSize">Size of the internal read buffer.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Stream input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes, int bufferSize)
         {
             //  Ensure that connection is established.
@@ -257,7 +259,9 @@ namespace Renci.SshNet
         /// <param name="width">The width.</param>
         /// <param name="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Stream input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes)
         {
             return this.CreateShell(input, output, extendedOutput, terminalName, columns, rows, width, height, terminalModes, 1024);
@@ -269,7 +273,9 @@ namespace Renci.SshNet
         /// <param name="input">The input.</param>
         /// <param name="output">The output.</param>
         /// <param name="extendedOutput">The extended output.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Stream input, Stream output, Stream extendedOutput)
         {
             return this.CreateShell(input, output, extendedOutput, string.Empty, 0, 0, 0, 0, null, 1024);
@@ -289,7 +295,9 @@ namespace Renci.SshNet
         /// <param name="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="bufferSize">Size of the internal read buffer.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes, int bufferSize)
         {
             this._inputStream = new MemoryStream();
@@ -313,8 +321,10 @@ namespace Renci.SshNet
         /// <param name="rows">The rows.</param>
         /// <param name="width">The width.</param>
         /// <param name="height">The height.</param>
-        /// <param name="terminalMode">The terminal mode.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <param name="terminalModes">The terminal modes.</param>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput, string terminalName, uint columns, uint rows, uint width, uint height, IDictionary<TerminalModes, uint> terminalModes)
         {
             return this.CreateShell(encoding, input, output, extendedOutput, terminalName, columns, rows, width, height, terminalModes, 1024);
@@ -327,7 +337,9 @@ namespace Renci.SshNet
         /// <param name="input">The input.</param>
         /// <param name="output">The output.</param>
         /// <param name="extendedOutput">The extended output.</param>
-        /// <returns>Returns a representation of a <see cref="Shell"/> object.</returns>
+        /// <returns>
+        /// Returns a representation of a <see cref="Shell" /> object.
+        /// </returns>
         public Shell CreateShell(Encoding encoding, string input, Stream output, Stream extendedOutput)
         {
             return this.CreateShell(encoding, input, output, extendedOutput, string.Empty, 0, 0, 0, 0, null, 1024);
@@ -342,8 +354,9 @@ namespace Renci.SshNet
         /// <param name="width">The width.</param>
         /// <param name="height">The height.</param>
         /// <param name="bufferSize">Size of the buffer.</param>
-        /// <param name="terminalModeValues">The terminal mode values.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Reference to Created ShellStream object.
+        /// </returns>
         public ShellStream CreateShellStream(string terminalName, uint columns, uint rows, uint width, uint height, int bufferSize)
         {
             return this.CreateShellStream(terminalName, columns, rows, width, height, bufferSize, null);
@@ -359,7 +372,9 @@ namespace Renci.SshNet
         /// <param name="height">The height.</param>
         /// <param name="bufferSize">Size of the buffer.</param>
         /// <param name="terminalModeValues">The terminal mode values.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Reference to Created ShellStream object.
+        /// </returns>
         public ShellStream CreateShellStream(string terminalName, uint columns, uint rows, uint width, uint height, int bufferSize, IDictionary<TerminalModes, uint> terminalModeValues)
         {
             //  Ensure that connection is established.

+ 2 - 1
Renci.SshClient/Renci.SshNet/SshCommand.cs

@@ -216,7 +216,8 @@ namespace Renci.SshNet
         /// Waits for the pending asynchronous command execution to complete.
         /// </summary>
         /// <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
-        /// <returns></returns>
+        /// <returns>Command execution result.</returns>
+        /// <exception cref="System.ArgumentException">Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.</exception>
         /// <exception cref="ArgumentException">Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.</exception>
         public string EndExecute(IAsyncResult asyncResult)
         {

+ 11 - 1
Renci.SshClient/Renci.SshNet/SubsystemSession.cs

@@ -54,7 +54,11 @@ namespace Renci.SshNet.Sftp
         /// <summary>
         /// Initializes a new instance of the SubsystemSession class.
         /// </summary>
-        /// <exception cref="ArgumentNullException"><paramref name="session"/> or <paramref name="subsystemName"/> is null.</exception>
+        /// <param name="session">The session.</param>
+        /// <param name="subsystemName">Name of the subsystem.</param>
+        /// <param name="operationTimeout">The operation timeout.</param>
+        /// <exception cref="System.ArgumentNullException">session</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="session" /> or <paramref name="subsystemName" /> is null.</exception>
         public SubsystemSession(Session session, string subsystemName, TimeSpan operationTimeout)
         {
             if (session == null)
@@ -227,6 +231,12 @@ namespace Renci.SshNet.Sftp
                         this._errorOccuredWaitHandle.Dispose();
                         this._errorOccuredWaitHandle = null;
                     }
+
+                    if (this._channelClosedWaitHandle != null)
+                    {
+                        this._channelClosedWaitHandle.Dispose();
+                        this._channelClosedWaitHandle = null;
+                    }
                 }
 
                 // Note disposing has been done.