Selaa lähdekoodia

Fix and add XML comments

olegkap_cp 12 vuotta sitten
vanhempi
sitoutus
358b08905f
62 muutettua tiedostoa jossa 429 lisäystä ja 226 poistoa
  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" />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <ProjectExtensions>
   <ProjectExtensions>
     <VisualStudio>
     <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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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}">
       <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
         <SilverlightProjectProperties />
         <SilverlightProjectProperties />
       </FlavorProperties>
       </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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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}">
       <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
         <SilverlightProjectProperties />
         <SilverlightProjectProperties />
       </FlavorProperties>
       </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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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>
     </CodeAnalysisDependentAssemblyPaths>
   </ItemGroup>
   </ItemGroup>
   <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">
     <Compile Include="..\Renci.SshNet.Tests\Classes\AuthenticationMethodTest.cs">
       <Link>Classes\AuthenticationMethodTest.cs</Link>
       <Link>Classes\AuthenticationMethodTest.cs</Link>
     </Compile>
     </Compile>
@@ -297,9 +288,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs">
     <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs">
       <Link>Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs</Link>
       <Link>Classes\Messages\Connection\ChannelOpen\X11ChannelOpenInfoTest.cs</Link>
     </Compile>
     </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">
     <Compile Include="..\Renci.SshNet.Tests\Classes\Messages\Connection\ChannelRequest\BreakRequestInfoTest.cs">
       <Link>Classes\Messages\Connection\ChannelRequest\BreakRequestInfoTest.cs</Link>
       <Link>Classes\Messages\Connection\ChannelRequest\BreakRequestInfoTest.cs</Link>
     </Compile>
     </Compile>
@@ -678,9 +666,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileStreamTest.cs">
     <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileStreamTest.cs">
       <Link>Classes\Sftp\SftpFileStreamTest.cs</Link>
       <Link>Classes\Sftp\SftpFileStreamTest.cs</Link>
     </Compile>
     </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">
     <Compile Include="..\Renci.SshNet.Tests\Classes\Sftp\SftpFileTest.cs">
       <Link>Classes\Sftp\SftpFileTest.cs</Link>
       <Link>Classes\Sftp\SftpFileTest.cs</Link>
     </Compile>
     </Compile>
@@ -711,30 +696,6 @@
     <Compile Include="..\Renci.SshNet.Tests\Common\TestBase.cs">
     <Compile Include="..\Renci.SshNet.Tests\Common\TestBase.cs">
       <Link>Common\TestBase.cs</Link>
       <Link>Common\TestBase.cs</Link>
     </Compile>
     </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\ForwardedPortRemote.NET35.cs" />
     <Compile Include="Classes\ForwardedPortLocal.NET35.cs" />
     <Compile Include="Classes\ForwardedPortLocal.NET35.cs" />
     <Compile Include="Classes\SshCommandTest.NET35.cs" />
     <Compile Include="Classes\SshCommandTest.NET35.cs" />
@@ -762,7 +723,7 @@
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ProjectExtensions>
   <ProjectExtensions>
     <VisualStudio>
     <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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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" />
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
   <ProjectExtensions>
   <ProjectExtensions>
     <VisualStudio>
     <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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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" />
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
   <ProjectExtensions>
   <ProjectExtensions>
     <VisualStudio>
     <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>
     </VisualStudio>
   </ProjectExtensions>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   <!-- 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
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Renci.SshNet.WindowsPhone8", "Renci.SshNet.WindowsPhone8\Renci.SshNet.WindowsPhone8.csproj", "{4A6CA785-1C8A-47FE-98C0-30C675A9328B}"
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Renci.SshNet.WindowsPhone8", "Renci.SshNet.WindowsPhone8\Renci.SshNet.WindowsPhone8.csproj", "{4A6CA785-1C8A-47FE-98C0-30C675A9328B}"
 EndProject
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{EFAF2072-A01F-4970-878A-AAD40326AFD2}"
-EndProject
 Global
 Global
 	GlobalSection(TestCaseManagementSettings) = postSolution
 	GlobalSection(TestCaseManagementSettings) = postSolution
 		CategoryFile = Renci.SshNet1.vsmdi
 		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|Mixed Platforms.Build.0 = Release|Any CPU
 		{4A6CA785-1C8A-47FE-98C0-30C675A9328B}.Release|x64.ActiveCfg = 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
 		{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
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 		HideSolutionNode = FALSE

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

@@ -48,7 +48,7 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// Authenticates the specified session.
         /// </summary>
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>Result of authentication  process.</returns>
         public abstract AuthenticationResult Authenticate(Session session);
         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
 namespace Renci.SshNet.Common
 {
 {
     /// <summary>
     /// <summary>
-    /// 
+    /// Implementation of ASCII Encoding
     /// </summary>
     /// </summary>
     public class ASCIIEncoding : Encoding
     public class ASCIIEncoding : Encoding
     {
     {

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

@@ -155,6 +155,7 @@ namespace Renci.SshNet.Common
     /// <summary>
     /// <summary>
     /// Base class to encapsulates the results of an asynchronous operation that returns result.
     /// Base class to encapsulates the results of an asynchronous operation that returns result.
     /// </summary>
     /// </summary>
+    /// <typeparam name="TResult">The type of the result.</typeparam>
     public abstract class AsyncResult<TResult> : AsyncResult
     public abstract class AsyncResult<TResult> : AsyncResult
     {
     {
         // Field set when operation completes
         // Field set when operation completes
@@ -186,7 +187,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// <summary>
         /// Waits until the asynchronous operation completes, and then returns the value generated by the asynchronous operation. 
         /// Waits until the asynchronous operation completes, and then returns the value generated by the asynchronous operation. 
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Invocation result</returns>
         new public TResult EndInvoke()
         new public TResult EndInvoke()
         {
         {
             base.EndInvoke(); // Wait until operation has completed 
             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
         /// Generates random BigInteger number
         /// </summary>
         /// </summary>
         /// <param name="bitLength">Length of random number in bits.</param>
         /// <param name="bitLength">Length of random number in bits.</param>
-        /// <returns></returns>
+        /// <returns>Big random number.</returns>
         public static BigInteger Random(int bitLength)
         public static BigInteger Random(int bitLength)
         {
         {
             var bytesArray = new byte[bitLength / 8 + (((bitLength % 8) > 0) ? 1 : 0)];
             var bytesArray = new byte[bitLength / 8 + (((bitLength % 8) > 0) ? 1 : 0)];
@@ -2328,7 +2328,7 @@ namespace Renci.SshNet.Common
         /// </summary>
         /// </summary>
         /// <param name="bi">The bi.</param>
         /// <param name="bi">The bi.</param>
         /// <param name="modulus">The modulus.</param>
         /// <param name="modulus">The modulus.</param>
-        /// <returns></returns>
+        /// <returns>Modulus inverted number.</returns>
         public static BigInteger ModInverse(BigInteger bi, BigInteger modulus)
         public static BigInteger ModInverse(BigInteger bi, BigInteger modulus)
         {
         {
             BigInteger a = modulus, b = bi % 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="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="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>
         /// <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)
         public static BigInteger Parse(string value, System.Globalization.NumberStyles style, IFormatProvider provider)
         {
         {
             Exception ex;
             Exception ex;

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

@@ -83,7 +83,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// <summary>
         /// Encodes written data as DER byte array.
         /// Encodes written data as DER byte array.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>DER Encoded array.</returns>
         public byte[] Encode()
         public byte[] Encode()
         {
         {
             var length = this._data.Count();
             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.
         /// Trims the leading zero from bytes array.
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Data without leading zeros.</returns>
         internal static IEnumerable<byte> TrimLeadingZero(this IEnumerable<byte> data)
         internal static IEnumerable<byte> TrimLeadingZero(this IEnumerable<byte> data)
         {
         {
             bool leadingZero = true;
             bool leadingZero = true;

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

@@ -192,10 +192,10 @@
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// Returns true if there are 
+        /// Returns true if there are
         /// </summary>
         /// </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)
         private bool ReadAvailable(int count)
         {
         {
             return (this.Length >= count || this._isFlushed) &&
             return (this.Length >= count || this._isFlushed) &&

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

@@ -59,7 +59,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// <summary>
         /// Gets data bytes array
         /// Gets data bytes array
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Byte array representation of data structure.</returns>
         public virtual byte[] GetBytes()
         public virtual byte[] GetBytes()
         {
         {
             this._data = new List<byte>();
             this._data = new List<byte>();
@@ -278,7 +278,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// <summary>
         /// Reads next name-list data type from internal buffer.
         /// Reads next name-list data type from internal buffer.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>String array or read data..</returns>
         protected string[] ReadNamesList()
         protected string[] ReadNamesList()
         {
         {
             var namesList = this.ReadString();
             var namesList = this.ReadString();
@@ -288,7 +288,7 @@ namespace Renci.SshNet.Common
         /// <summary>
         /// <summary>
         /// Reads next extension-pair data type from internal buffer.
         /// Reads next extension-pair data type from internal buffer.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Extensions pair dictionary.</returns>
         protected IDictionary<string, string> ReadExtensionPair()
         protected IDictionary<string, string> ReadExtensionPair()
         {
         {
             Dictionary<string, string> result = new Dictionary<string, string>();
             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
 namespace Renci.SshNet.Compression
 {
 {
     /// <summary>
     /// <summary>
-    /// 
+    /// Implements Zlib compression algorithm.
     /// </summary>
     /// </summary>
     public class ZlibStream
     public class ZlibStream
     {
     {
@@ -35,6 +35,12 @@ namespace Renci.SshNet.Compression
             //this._baseStream.FlushMode = Ionic.Zlib.FlushType.Partial;
             //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)
         public void Write(byte[] buffer, int offset, int count)
         {
         {
             //this._baseStream.Write(buffer, offset, 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.ArgumentException">host</exception>
         /// <exception cref="System.ArgumentOutOfRangeException">proxyPort</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="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>
         /// <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)
         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.
         /// Authenticates the specified session.
         /// </summary>
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>Result of authentication  process.</returns>
         public override AuthenticationResult Authenticate(Session session)
         public override AuthenticationResult Authenticate(Session session)
         {
         {
             this._session = session;
             this._session = session;

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

@@ -27,7 +27,7 @@ namespace Renci.SshNet.Messages
         /// <summary>
         /// <summary>
         /// Gets data bytes array
         /// Gets data bytes array
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Byte array representation of the message</returns>
         public override byte[] GetBytes()
         public override byte[] GetBytes()
         {
         {
             var messageAttribute = this.GetType().GetCustomAttributes(typeof(MessageAttribute), true).SingleOrDefault() as MessageAttribute;
             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.
     //  TODO:   Please help with documentation here, as I don't know the details, specially for the methods not documented.
     /// <summary>
     /// <summary>
-    /// 
+    /// Contains operation for working with NetConf server.
     /// </summary>
     /// </summary>
     public partial class NetConfClient : BaseClient
     public partial class NetConfClient : BaseClient
     {
     {
@@ -55,7 +55,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public NetConfClient(string host, int port, string username, string password)
         public NetConfClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -85,7 +85,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public NetConfClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
         public NetConfClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, 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; }
         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>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         public XmlDocument SendReceiveRpc(XmlDocument rpc)
         public XmlDocument SendReceiveRpc(XmlDocument rpc)
         {
         {
@@ -144,6 +154,11 @@ namespace Renci.SshNet
             return this._netConfSession.SendReceiveRpc(rpc, this.AutomaticMessageIdHandling);
             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)
         public XmlDocument SendReceiveRpc(string xml)
         {
         {
             var rpc = new XmlDocument();
             var rpc = new XmlDocument();
@@ -151,6 +166,10 @@ namespace Renci.SshNet
             return SendReceiveRpc(rpc);
             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>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         public XmlDocument SendCloseRpc()
         public XmlDocument SendCloseRpc()
         {
         {

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

@@ -40,8 +40,10 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// Authenticates the specified session.
         /// </summary>
         /// </summary>
         /// <param name="session">The session.</param>
         /// <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)
         public override AuthenticationResult Authenticate(Session session)
         {
         {
             if (session == null)
             if (session == null)

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

@@ -73,9 +73,15 @@ namespace Renci.SshNet
         /// Authenticates the specified session.
         /// Authenticates the specified session.
         /// </summary>
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
         /// <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)
         public override AuthenticationResult Authenticate(Session session)
         {
         {
+            if (session == null)
+                throw new ArgumentNullException("session");
+
             this._session = session;
             this._session = session;
 
 
             session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;
             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
     /// Provides connection information when password authentication method is used
     /// </summary>
     /// </summary>
     /// <remarks>
     /// <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>
     /// </remarks>
     public class PasswordConnectionInfo : ConnectionInfo, IDisposable
     public class PasswordConnectionInfo : ConnectionInfo, IDisposable
     {
     {
@@ -45,7 +45,7 @@ namespace Renci.SshNet
         /// <param name="password">Connection password.</param>
         /// <param name="password">Connection password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</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="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)
         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)
             : 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>
         /// <summary>
-        /// Initializes a new instance of the <see cref="PasswordConnectionInfo"/> class.
+        /// Initializes a new instance of the <see cref="PasswordConnectionInfo" /> class.
         /// </summary>
         /// </summary>
         /// <param name="host">Connection host.</param>
         /// <param name="host">Connection host.</param>
         /// <param name="port">Connection port.</param>
         /// <param name="port">Connection port.</param>
         /// <param name="username">Connection username.</param>
         /// <param name="username">Connection username.</param>
         /// <param name="password">Connection password.</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)
         public PasswordConnectionInfo(string host, int port, string username, byte[] password)
             : this(host, port, username, password, ProxyTypes.None, string.Empty, 0, string.Empty, string.Empty)
             : 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.
         /// Authenticates the specified session.
         /// </summary>
         /// </summary>
         /// <param name="session">The session to authenticate.</param>
         /// <param name="session">The session to authenticate.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Result of authentication  process.
+        /// </returns>
         public override AuthenticationResult Authenticate(Session session)
         public override AuthenticationResult Authenticate(Session session)
         {
         {
             session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;
             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));
                         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);
                     reader = new SshDataReader(keyData);
 
 
                     var decryptedLength = reader.ReadUInt32();
                     var decryptedLength = reader.ReadUInt32();
 
 
                     if (decryptedLength + 4 != blobSize)
                     if (decryptedLength + 4 != blobSize)
                         throw new SshException("Invalid passphrase.");
                         throw new SshException("Invalid passphrase.");
-
+                    
                     if (keyType == "if-modn{sign{rsa-pkcs1-sha1},encrypt{rsa-pkcs1v2-oaep}}")
                     if (keyType == "if-modn{sign{rsa-pkcs1-sha1},encrypt{rsa-pkcs1v2-oaep}}")
                     {
                     {
                         var exponent = reader.ReadBigIntWithBits();//e
                         var exponent = reader.ReadBigIntWithBits();//e
@@ -282,8 +284,9 @@ namespace Renci.SshNet
         /// <param name="cipherData">Encrypted data.</param>
         /// <param name="cipherData">Encrypted data.</param>
         /// <param name="passPhrase">Decryption pass phrase.</param>
         /// <param name="passPhrase">Decryption pass phrase.</param>
         /// <param name="binarySalt">Decryption binary salt.</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)
         private static byte[] DecryptKey(CipherInfo cipherInfo, byte[] cipherData, string passPhrase, byte[] binarySalt)
         {
         {
             if (cipherInfo == null)
             if (cipherInfo == null)
@@ -384,17 +387,17 @@ namespace Renci.SshNet
                 this.LoadBytes(data);
                 this.LoadBytes(data);
             }
             }
 
 
-            public UInt32 ReadUInt32()
+            public new UInt32 ReadUInt32()
             {
             {
                 return base.ReadUInt32();
                 return base.ReadUInt32();
             }
             }
 
 
-            public string ReadString()
+            public new string ReadString()
             {
             {
                 return base.ReadString();
                 return base.ReadString();
             }
             }
 
 
-            public byte[] ReadBytes(int length)
+            public new byte[] ReadBytes(int length)
             {
             {
                 return base.ReadBytes(length);
                 return base.ReadBytes(length);
             }
             }

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

@@ -20,7 +20,7 @@
     <OutputPath>bin\Debug\</OutputPath>
     <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
+    <WarningLevel>0</WarningLevel>
     <DocumentationFile>bin\Debug\Renci.SshNet.xml</DocumentationFile>
     <DocumentationFile>bin\Debug\Renci.SshNet.xml</DocumentationFile>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   <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>
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public ScpClient(string host, int port, string username, string password)
         public ScpClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -114,7 +114,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public ScpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
         public ScpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, 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.
         /// Signs the specified data.
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Signed data.</returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Sign(byte[] data)
         public override byte[] Sign(byte[] data)
         {
         {
             throw new NotImplementedException();
             throw new NotImplementedException();
@@ -43,7 +44,8 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
         /// <param name="signature">The signature.</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)
         public override bool VerifySignature(byte[] data, byte[] signature)
         {
         {
             throw new NotImplementedException();
             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.
         /// Encrypts the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Encrypted data.</returns>
         public abstract byte[] Encrypt(byte[] input);
         public abstract byte[] Encrypt(byte[] input);
 
 
         /// <summary>
         /// <summary>
         /// Decrypts the specified input.
         /// Decrypts the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Decrypted data.</returns>
         public abstract byte[] Decrypt(byte[] input);
         public abstract byte[] Decrypt(byte[] input);
 
 
         #region Packing functions
         #region Packing functions
@@ -57,7 +57,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts big endian bytes into number.
         /// Converts big endian bytes into number.
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="Int32" />.</returns>
         protected static uint BigEndianToUInt32(byte[] buffer)
         protected static uint BigEndianToUInt32(byte[] buffer)
         {
         {
             uint n = (uint)buffer[0] << 24;
             uint n = (uint)buffer[0] << 24;
@@ -72,7 +72,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt32" />.</returns>
         protected static uint BigEndianToUInt32(byte[] buffer, int offset)
         protected static uint BigEndianToUInt32(byte[] buffer, int offset)
         {
         {
             uint n = (uint)buffer[offset] << 24;
             uint n = (uint)buffer[offset] << 24;
@@ -86,7 +86,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts big endian bytes into number.
         /// Converts big endian bytes into number.
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong BigEndianToUInt64(byte[] buffer)
         protected static ulong BigEndianToUInt64(byte[] buffer)
         {
         {
             uint hi = BigEndianToUInt32(buffer);
             uint hi = BigEndianToUInt32(buffer);
@@ -99,7 +99,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong BigEndianToUInt64(byte[] buffer, int offset)
         protected static ulong BigEndianToUInt64(byte[] buffer, int offset)
         {
         {
             uint hi = BigEndianToUInt32(buffer, offset);
             uint hi = BigEndianToUInt32(buffer, offset);
@@ -161,7 +161,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts little endian bytes into number.
         /// Converts little endian bytes into number.
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt32" />.</returns>
         protected static uint LittleEndianToUInt32(byte[] buffer)
         protected static uint LittleEndianToUInt32(byte[] buffer)
         {
         {
             uint n = (uint)buffer[0];
             uint n = (uint)buffer[0];
@@ -176,7 +176,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="Int32" />.</returns>
         protected static uint LittleEndianToUInt32(byte[] buffer, int offset)
         protected static uint LittleEndianToUInt32(byte[] buffer, int offset)
         {
         {
             uint n = (uint)buffer[offset];
             uint n = (uint)buffer[offset];
@@ -190,7 +190,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Converts little endian bytes into number.
         /// Converts little endian bytes into number.
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong LittleEndianToUInt64(byte[] buffer)
         protected static ulong LittleEndianToUInt64(byte[] buffer)
         {
         {
             uint lo = LittleEndianToUInt32(buffer);
             uint lo = LittleEndianToUInt32(buffer);
@@ -203,7 +203,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// </summary>
         /// <param name="buffer">The buffer.</param>
         /// <param name="buffer">The buffer.</param>
         /// <param name="offset">The buffer offset.</param>
         /// <param name="offset">The buffer offset.</param>
-        /// <returns></returns>
+        /// <returns>Converted <see cref="UInt64" />.</returns>
         protected static ulong LittleEndianToUInt64(byte[] buffer, int offset)
         protected static ulong LittleEndianToUInt64(byte[] buffer, int offset)
         {
         {
             uint lo = LittleEndianToUInt32(buffer, 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>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</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)
         public override bool Verify(byte[] input, byte[] signature)
         {
         {
             var encryptedSignature = this._cipher.Decrypt(signature);
             var encryptedSignature = this._cipher.Decrypt(signature);
@@ -54,7 +56,9 @@ namespace Renci.SshNet.Security.Cryptography
         /// Creates the signature.
         /// Creates the signature.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Signed input data.
+        /// </returns>
         public override byte[] Sign(byte[] input)
         public override byte[] Sign(byte[] input)
         {
         {
             //  Calculate hash value
             //  Calculate hash value
@@ -70,7 +74,7 @@ namespace Renci.SshNet.Security.Cryptography
         /// Hashes the specified input.
         /// Hashes the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Hashed data.</returns>
         protected abstract byte[] Hash(byte[] input);
         protected abstract byte[] Hash(byte[] input);
 
 
         /// <summary>
         /// <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
 namespace Renci.SshNet.Security.Cryptography.Ciphers
 {
 {
     /// <summary>
     /// <summary>
-    /// 
+    /// AES cipher implementation.
     /// </summary>
     /// </summary>
     public class AesCipher : BlockCipher
     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.
         /// Encrypts the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Encrypted data.
+        /// </returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Encrypt(byte[] input)
         public override byte[] Encrypt(byte[] input)
         {
         {
             throw new NotImplementedException();
             throw new NotImplementedException();
@@ -67,7 +70,10 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Decrypts the specified input.
         /// Decrypts the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Decrypted data.
+        /// </returns>
+        /// <exception cref="System.NotImplementedException"></exception>
         public override byte[] Decrypt(byte[] input)
         public override byte[] Decrypt(byte[] input)
         {
         {
             throw new NotImplementedException();
             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
 namespace Renci.SshNet.Security.Cryptography.Ciphers
 {
 {
 	/// <summary>
 	/// <summary>
-	/// 
-	/// </summary>
+    /// Blowfish cipher implementation.
+    /// </summary>
 	public class BlowfishCipher : BlockCipher
 	public class BlowfishCipher : BlockCipher
 	{
 	{
 		#region Static reference tables
 		#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>
         /// </summary>
         /// <param name="blockSize">Size of the block.</param>
         /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Padded data array.</returns>
         public abstract byte[] Pad(int blockSize, byte[] input);
         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;
 			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)
 		protected int[] GenerateWorkingKey(bool encrypting, byte[] key)
 		{
 		{
 			this.ValidateKey();
 			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>
         /// <summary>
         /// Transforms the specified input.
         /// Transforms the specified input.
         /// </summary>
         /// </summary>
-        /// <param name="blockSize"></param>
+        /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Padded data array.
+        /// </returns>
         public override byte[] Pad(int blockSize, byte[] input)
         public override byte[] Pad(int blockSize, byte[] input)
         {
         {
             var numOfPaddedBytes = blockSize - (input.Length % blockSize);
             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>
         /// <summary>
         /// Transforms the specified input.
         /// Transforms the specified input.
         /// </summary>
         /// </summary>
-        /// <param name="blockSize"></param>
+        /// <param name="blockSize">Size of the block.</param>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Padded data array.
+        /// </returns>
         public override byte[] Pad(int blockSize, byte[] input)
         public override byte[] Pad(int blockSize, byte[] input)
         {
         {
             var numOfPaddedBytes = blockSize - (input.Length % blockSize);
             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.
         /// Encrypts the specified data.
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Encrypted data.</returns>
         public override byte[] Encrypt(byte[] data)
         public override byte[] Encrypt(byte[] data)
         {
         {
             //  Calculate signature
             //  Calculate signature
@@ -59,7 +59,10 @@ namespace Renci.SshNet.Security.Cryptography.Ciphers
         /// Decrypts the specified data.
         /// Decrypts the specified data.
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <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>
         /// <exception cref="NotSupportedException">Thrown when decrypted block type is not supported.</exception>
         public override byte[] Decrypt(byte[] data)
         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>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</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);
         public abstract bool Verify(byte[] input, byte[] signature);
 
 
         /// <summary>
         /// <summary>
         /// Creates the signature.
         /// Creates the signature.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>Signed input data.</returns>
         public abstract byte[] Sign(byte[] input);
         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;
         private DsaKey _key;
 
 
         /// <summary>
         /// <summary>
-        /// Initializes a new instance of the <see cref="DsaDigitalSignature"/> class.
+        /// Initializes a new instance of the <see cref="DsaDigitalSignature" /> class.
         /// </summary>
         /// </summary>
         /// <param name="key">The DSA key.</param>
         /// <param name="key">The DSA key.</param>
+        /// <exception cref="System.ArgumentNullException">key</exception>
         public DsaDigitalSignature(DsaKey key)
         public DsaDigitalSignature(DsaKey key)
         {
         {
             if (key == null)
             if (key == null)
@@ -38,7 +39,10 @@ namespace Renci.SshNet.Security.Cryptography
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
         /// <param name="signature">The signature.</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)
         public override bool Verify(byte[] input, byte[] signature)
         {
         {
             var hashInput = this._hash.ComputeHash(input);
             var hashInput = this._hash.ComputeHash(input);
@@ -91,7 +95,10 @@ namespace Renci.SshNet.Security.Cryptography
         /// Creates the signature.
         /// Creates the signature.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <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)
         public override byte[] Sign(byte[] input)
         {
         {
             var hashInput = this._hash.ComputeHash(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[2] = g;
             this._privateKey[3] = y;
             this._privateKey[3] = y;
             this._privateKey[4] = x;
             this._privateKey[4] = x;
-        }        
+        }
 
 
         #region IDisposable Members
         #region IDisposable Members
 
 

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

@@ -9,7 +9,7 @@ namespace Renci.SshNet.Security.Cryptography
     /// <summary>
     /// <summary>
     /// Provides HMAC algorithm implementation.
     /// Provides HMAC algorithm implementation.
     /// </summary>
     /// </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()
     public class HMac<T> : KeyedHashAlgorithm where T : HashAlgorithm, new()
     {
     {
         private HashAlgorithm _hash;
         private HashAlgorithm _hash;
@@ -49,8 +49,9 @@ namespace Renci.SshNet.Security.Cryptography
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 
+        /// Gets or sets the key to use in the hash algorithm.
         /// </summary>
         /// </summary>
+        /// <returns>The key to use in the hash algorithm.</returns>
         public override byte[] Key
         public override byte[] Key
         {
         {
             get
             get
@@ -64,7 +65,7 @@ namespace Renci.SshNet.Security.Cryptography
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 
+        /// Initializes an implementation of the <see cref="T:System.Security.Cryptography.HashAlgorithm" /> class.
         /// </summary>
         /// </summary>
         public override void Initialize()
         public override void Initialize()
         {
         {
@@ -72,11 +73,11 @@ namespace Renci.SshNet.Security.Cryptography
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 
+        /// Hashes the core.
         /// </summary>
         /// </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)
         protected override void HashCore(byte[] rgb, int ib, int cb)
         {
         {
             if (!this._isHashing)
             if (!this._isHashing)
@@ -88,9 +89,11 @@ namespace Renci.SshNet.Security.Cryptography
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 
+        /// Finalizes the hash computation after the last data is processed by the cryptographic stream object.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>
+        /// The computed hash code.
+        /// </returns>
         protected override byte[] HashFinal()
         protected override byte[] HashFinal()
         {
         {
             if (!this._isHashing)
             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.
         /// Signs the specified data with the key.
         /// </summary>
         /// </summary>
         /// <param name="data">The data to sign.</param>
         /// <param name="data">The data to sign.</param>
-        /// <returns>Signed data.</returns>
+        /// <returns>
+        /// Signed data.
+        /// </returns>
         public byte[] Sign(byte[] data)
         public byte[] Sign(byte[] data)
         {
         {
             return this.DigitalSignature.Sign(data);
             return this.DigitalSignature.Sign(data);
@@ -83,7 +85,7 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// </summary>
         /// <param name="data">The data to verify.</param>
         /// <param name="data">The data to verify.</param>
         /// <param name="signature">The signature to verify against.</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)
         public bool VerifySignature(byte[] data, byte[] signature)
         {
         {
             return this.DigitalSignature.Verify(data, 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.
         /// Hashes the specified input.
         /// </summary>
         /// </summary>
         /// <param name="input">The input.</param>
         /// <param name="input">The input.</param>
-        /// <returns></returns>
+        /// <returns>
+        /// Hashed data.
+        /// </returns>
         protected override byte[] Hash(byte[] input)
         protected override byte[] Hash(byte[] input)
         {
         {
             return this._hash.ComputeHash(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
 namespace Renci.SshNet.Security.Cryptography
 {
 {
     /// <summary>
     /// <summary>
-    /// 
+    /// Base class of stream cipher algorithms.
     /// </summary>
     /// </summary>
     public abstract class StreamCipher : SymmetricCipher
     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.
         /// Signs the specified data.
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
-        /// <returns></returns>
+        /// <returns>Signed data.</returns>
         public abstract byte[] Sign(byte[] data);
         public abstract byte[] Sign(byte[] data);
 
 
         /// <summary>
         /// <summary>
@@ -43,7 +43,7 @@ namespace Renci.SshNet.Security
         /// </summary>
         /// </summary>
         /// <param name="data">The data.</param>
         /// <param name="data">The data.</param>
         /// <param name="signature">The signature.</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);
         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>
         /// <summary>
         /// Creates the server side cipher to use.
         /// Creates the server side cipher to use.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Server cipher.</returns>
         public BlockCipher CreateServerCipher()
         public BlockCipher CreateServerCipher()
         {
         {
             //  Resolve Session ID
             //  Resolve Session ID
@@ -198,7 +198,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// <summary>
         /// Creates the client side cipher to use.
         /// Creates the client side cipher to use.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Client cipher.</returns>
         public BlockCipher CreateClientCipher()
         public BlockCipher CreateClientCipher()
         {
         {
             //  Resolve Session ID
             //  Resolve Session ID
@@ -219,7 +219,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// <summary>
         /// Creates the server side hash algorithm to use.
         /// Creates the server side hash algorithm to use.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Hash algorithm</returns>
         public HashAlgorithm CreateServerHash()
         public HashAlgorithm CreateServerHash()
         {
         {
             //  Resolve Session ID
             //  Resolve Session ID
@@ -232,7 +232,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// <summary>
         /// Creates the client side hash algorithm to use.
         /// Creates the client side hash algorithm to use.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Hash algorithm</returns>
         public HashAlgorithm CreateClientHash()
         public HashAlgorithm CreateClientHash()
         {
         {
             //  Resolve Session ID
             //  Resolve Session ID
@@ -245,7 +245,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// <summary>
         /// Creates the compression algorithm to use to deflate data.
         /// Creates the compression algorithm to use to deflate data.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Compression method.</returns>
         public Compressor CreateCompressor()
         public Compressor CreateCompressor()
         {
         {
             if (this._compressionType == null)
             if (this._compressionType == null)
@@ -261,7 +261,7 @@ namespace Renci.SshNet.Security
         /// <summary>
         /// <summary>
         /// Creates the compression algorithm to use to inflate data.
         /// Creates the compression algorithm to use to inflate data.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Compression method.</returns>
         public Compressor CreateDecompressor()
         public Compressor CreateDecompressor()
         {
         {
             if (this._compressionType == null)
             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"; }
             get { return "diffie-hellman-group14-sha1"; }
         }
         }
 
 
+        /// <summary>
+        /// Gets the group prime.
+        /// </summary>
+        /// <value>
+        /// The group prime.
+        /// </value>
         public override BigInteger GroupPrime
         public override BigInteger GroupPrime
         {
         {
             get
             get

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

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

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

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

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

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

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

@@ -791,7 +791,8 @@ namespace Renci.SshNet
         /// <summary>
         /// <summary>
         /// Receives the message from the server.
         /// Receives the message from the server.
         /// </summary>
         /// </summary>
-        /// <returns></returns>
+        /// <returns>Incoming SSH message.</returns>
+        /// <exception cref="SshConnectionException"></exception>
         private Message ReceiveMessage()
         private Message ReceiveMessage()
         {
         {
             if (!this._socket.Connected)
             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;
         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; }
         public ulong BlockSize { get; private set; }
 
 
+        /// <summary>
+        /// Gets the total blocks.
+        /// </summary>
+        /// <value>
+        /// The total blocks.
+        /// </value>
         public ulong TotalBlocks { get; private set; }
         public ulong TotalBlocks { get; private set; }
 
 
+        /// <summary>
+        /// Gets the free blocks.
+        /// </summary>
+        /// <value>
+        /// The free blocks.
+        /// </value>
         public ulong FreeBlocks { get; private set; }
         public ulong FreeBlocks { get; private set; }
 
 
+        /// <summary>
+        /// Gets the available blocks.
+        /// </summary>
+        /// <value>
+        /// The available blocks.
+        /// </value>
         public ulong AvailableBlocks { get; private set; }
         public ulong AvailableBlocks { get; private set; }
 
 
+        /// <summary>
+        /// Gets the total nodes.
+        /// </summary>
+        /// <value>
+        /// The total nodes.
+        /// </value>
         public ulong TotalNodes { get; private set; }
         public ulong TotalNodes { get; private set; }
 
 
+        /// <summary>
+        /// Gets the free nodes.
+        /// </summary>
+        /// <value>
+        /// The free nodes.
+        /// </value>
         public ulong FreeNodes { get; private set; }
         public ulong FreeNodes { get; private set; }
 
 
+        /// <summary>
+        /// Gets the available nodes.
+        /// </summary>
+        /// <value>
+        /// The available nodes.
+        /// </value>
         public ulong AvailableNodes { get; private set; }
         public ulong AvailableNodes { get; private set; }
 
 
+        /// <summary>
+        /// Gets the sid.
+        /// </summary>
+        /// <value>
+        /// The sid.
+        /// </value>
         public ulong Sid { get; private set; }
         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
         public bool IsReadOnly
         {
         {
             get { return (_flag & SSH_FXE_STATVFS_ST_RDONLY) == SSH_FXE_STATVFS_ST_RDONLY; }
             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
         public bool SupportsSetUid
         {
         {
             get { return (_flag & SSH_FXE_STATVFS_ST_NOSUID) == 0; }
             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; }
         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)
         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;
             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
     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();
             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="path">The path.</param>
         /// <param name="flags">The flags.</param>
         /// <param name="flags">The flags.</param>
         /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</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)
         internal byte[] RequestOpen(string path, Flags flags, bool nullOnError = false)
         {
         {
             byte[] handle = null;
             byte[] handle = null;
@@ -526,7 +526,7 @@ namespace Renci.SshNet.Sftp
         /// </summary>
         /// </summary>
         /// <param name="path">The path.</param>
         /// <param name="path">The path.</param>
         /// <param name="nullOnError">if set to <c>true</c> returns null instead of throwing an exception.</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)
         internal byte[] RequestOpenDir(string path, bool nullOnError = false)
         {
         {
             byte[] handle = null;
             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; }
         public int FilesRead { get; private set; }
 
 
         /// <summary>
         /// <summary>
-        /// Initializes a new instance of the <see cref="SftpListDirectoryAsyncResult"/> class.
+        /// Initializes a new instance of the <see cref="SftpListDirectoryAsyncResult" /> class.
         /// </summary>
         /// </summary>
         /// <param name="asyncCallback">The async callback.</param>
         /// <param name="asyncCallback">The async callback.</param>
         /// <param name="state">The state.</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
         #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)
         public IEnumerable<FileInfo> SynchronizeDirectories(string sourcePath, string destinationPath, string searchPattern)
         {
         {
             return InternalSynchronizeDirectories(sourcePath, destinationPath, searchPattern, null);
             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)
         public IAsyncResult BeginSynchronizeDirectories(string sourcePath, string destinationPath, string searchPattern, AsyncCallback asyncCallback, object state)
         {
         {
             if (sourcePath == null)
             if (sourcePath == null)
                 throw new ArgumentNullException("sourceDir");
                 throw new ArgumentNullException("sourceDir");
+
             if (destinationPath.IsNullOrWhiteSpace())
             if (destinationPath.IsNullOrWhiteSpace())
                 throw new ArgumentException("destDir");
                 throw new ArgumentException("destDir");
 
 
@@ -52,6 +73,12 @@ namespace Renci.SshNet
             return asyncResult;
             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)
         public IEnumerable<FileInfo> EndSynchronizeDirectories(IAsyncResult asyncResult)
         {
         {
             var ar = asyncResult as SftpSynchronizeDirectoriesAsyncResult;
             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>
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is <b>null</b>.</exception>
         /// <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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SftpClient(string host, int port, string username, string password)
         public SftpClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -106,7 +106,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is <b>null</b>.</exception>
         /// <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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SftpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
         public SftpClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, 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="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="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="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)
         public void ChangeDirectory(string path)
         {
         {
             if (path == null)
             if (path == null)
                 throw new ArgumentNullException("path");
                 throw new ArgumentNullException("path");
-
+            
             //  Ensure that connection is established.
             //  Ensure that connection is established.
             this.EnsureConnection();
             this.EnsureConnection();
-
+            
             this._sftpSession.ChangeDirectory(path);
             this._sftpSession.ChangeDirectory(path);
         }
         }
 
 
@@ -158,7 +158,7 @@ namespace Renci.SshNet
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <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="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="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)
         public void ChangePermissions(string path, short mode)
         {
         {
             var file = this.Get(path);
             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="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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)
         public void CreateDirectory(string path)
         {
         {
             if (path.IsNullOrWhiteSpace())
             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="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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)
         public void DeleteDirectory(string path)
         {
         {
             if (path.IsNullOrWhiteSpace())
             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="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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)
         public void DeleteFile(string path)
         {
         {
             if (path.IsNullOrWhiteSpace())
             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="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="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.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)
         public void RenameFile(string oldPath, string newPath)
         {
         {
             this.RenameFile(oldPath, newPath, false);
             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="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="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.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)
         public void RenameFile(string oldPath, string newPath, bool isPosix)
         {
         {
             if (oldPath == null)
             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="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="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.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)
         public void SymbolicLink(string path, string linkPath)
         {
         {
             if (path.IsNullOrWhiteSpace())
             if (path.IsNullOrWhiteSpace())
@@ -317,7 +317,7 @@ namespace Renci.SshNet
         /// <exception cref="ArgumentNullException"><paramref name="path" /> is <b>null</b>.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="path" /> is <b>null</b>.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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)
         public IEnumerable<SftpFile> ListDirectory(string path, Action<int> listCallback = null)
         {
         {
             return InternalListDirectory(path, listCallback);
             return InternalListDirectory(path, listCallback);
@@ -385,9 +385,10 @@ namespace Renci.SshNet
         /// Gets reference to remote file or directory.
         /// Gets reference to remote file or directory.
         /// </summary>
         /// </summary>
         /// <param name="path">The path.</param>
         /// <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="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)
         public SftpFile Get(string path)
         {
         {
             if (path == null)
             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="ArgumentException"><paramref name="path"/> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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)
         public bool Exists(string path)
         {
         {
             if (path.IsNullOrWhiteSpace())
             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="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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>
         /// <remarks>
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
         /// </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="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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>
         /// <remarks>
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// Method calls made by this method to <paramref name="output" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
         /// </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="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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>
         /// <remarks>
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
         /// </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="ArgumentException"><paramref name="path" /> is <b>null</b> or contains whitespace characters.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</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.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>
         /// <remarks>
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// Method calls made by this method to <paramref name="input" />, may under certain conditions result in exceptions thrown by the stream.
         /// </remarks>
         /// </remarks>
@@ -588,13 +589,18 @@ namespace Renci.SshNet
         /// <param name="path">Remote file path.</param>
         /// <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="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>
         /// <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="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.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)
         public IAsyncResult BeginUploadFile(Stream input, string path, AsyncCallback asyncCallback, object state, Action<ulong> uploadCallback = null)
         {
         {
             return this.BeginUploadFile(input, path, true, asyncCallback, state, uploadCallback);
             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="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="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>
         /// <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="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.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)
         public IAsyncResult BeginUploadFile(Stream input, string path, bool canOverride, AsyncCallback asyncCallback, object state, Action<ulong> uploadCallback = null)
         {
         {
             if (input == null)
             if (input == null)
@@ -665,7 +678,8 @@ namespace Renci.SshNet
         /// Ends an asynchronous uploading the steam into remote file.
         /// Ends an asynchronous uploading the steam into remote file.
         /// </summary>
         /// </summary>
         /// <param name="asyncResult">The pending asynchronous SFTP request.</param>
         /// <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)
         public void EndUploadFile(IAsyncResult asyncResult)
         {
         {
             var ar = asyncResult as SftpUploadAsyncResult;
             var ar = asyncResult as SftpUploadAsyncResult;
@@ -681,9 +695,10 @@ namespace Renci.SshNet
         /// Gets status using statvfs@openssh.com request.
         /// Gets status using statvfs@openssh.com request.
         /// </summary>
         /// </summary>
         /// <param name="path">The path.</param>
         /// <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="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)
         public SftpFileSytemInformation GetStatus(string path)
         {
         {
             if (path == null)
             if (path == null)

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

@@ -314,7 +314,9 @@ namespace Renci.SshNet
         /// Begins the expect.
         /// Begins the expect.
         /// </summary>
         /// </summary>
         /// <param name="expectActions">The expect actions.</param>
         /// <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)
         public IAsyncResult BeginExpect(params ExpectAction[] expectActions)
         {
         {
             return this.BeginExpect(TimeSpan.Zero, null, null, expectActions);
             return this.BeginExpect(TimeSpan.Zero, null, null, expectActions);
@@ -324,9 +326,10 @@ namespace Renci.SshNet
         /// Begins the expect.
         /// Begins the expect.
         /// </summary>
         /// </summary>
         /// <param name="callback">The callback.</param>
         /// <param name="callback">The callback.</param>
-        /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</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)
         public IAsyncResult BeginExpect(AsyncCallback callback, params ExpectAction[] expectActions)
         {
         {
             return this.BeginExpect(TimeSpan.Zero, callback, null, expectActions);
             return this.BeginExpect(TimeSpan.Zero, callback, null, expectActions);
@@ -338,7 +341,9 @@ namespace Renci.SshNet
         /// <param name="callback">The callback.</param>
         /// <param name="callback">The callback.</param>
         /// <param name="state">The state.</param>
         /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</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)
         public IAsyncResult BeginExpect(AsyncCallback callback, object state, params ExpectAction[] expectActions)
         {
         {
             return this.BeginExpect(TimeSpan.Zero, callback, state, expectActions);
             return this.BeginExpect(TimeSpan.Zero, callback, state, expectActions);
@@ -351,7 +356,9 @@ namespace Renci.SshNet
         /// <param name="callback">The callback.</param>
         /// <param name="callback">The callback.</param>
         /// <param name="state">The state.</param>
         /// <param name="state">The state.</param>
         /// <param name="expectActions">The expect actions.</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)
         public IAsyncResult BeginExpect(TimeSpan timeout, AsyncCallback callback, object state, params ExpectAction[] expectActions)
         {
         {
             var text = string.Empty;
             var text = string.Empty;
@@ -461,7 +468,9 @@ namespace Renci.SshNet
         /// </summary>
         /// </summary>
         /// <param name="text">The text to expect.</param>
         /// <param name="text">The text to expect.</param>
         /// <param name="timeout">Time to wait for input.</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.
         /// 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)
         public string Expect(string text, TimeSpan timeout)
         {
         {
             return this.Expect(new Regex(Regex.Escape(text)), timeout);
             return this.Expect(new Regex(Regex.Escape(text)), timeout);
@@ -637,6 +646,12 @@ namespace Renci.SshNet
                 this._channel = null;
                 this._channel = null;
             }
             }
 
 
+            if (this._dataReceived != null)
+            {
+                this._dataReceived.Dispose();
+                this._dataReceived = null;
+            }
+
             if (this._session != null)
             if (this._session != null)
             {
             {
                 this._session.Disconnected -= new EventHandler<EventArgs>(Session_Disconnected);
                 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.
     /// Provides client connection to SSH server.
     /// </summary>
     /// </summary>
     public class SshClient : BaseClient
     public class SshClient : BaseClient
-   { 
+    {
         /// <summary>
         /// <summary>
         /// Holds the list of forwarded ports
         /// Holds the list of forwarded ports
         /// </summary>
         /// </summary>
@@ -39,8 +39,8 @@ namespace Renci.SshNet
         #region Constructors
         #region Constructors
 
 
         /// <summary>
         /// <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>
         /// <param name="connectionInfo">The connection info.</param>
         /// <example>
         /// <example>
         ///     Connect to the server using PasswordConnectionInfo object
         ///     Connect to the server using PasswordConnectionInfo object
@@ -61,7 +61,7 @@ namespace Renci.SshNet
         /// <param name="password">Authentication password.</param>
         /// <param name="password">Authentication password.</param>
         /// <exception cref="ArgumentNullException"><paramref name="password"/> is null.</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="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.")]
         [SuppressMessage("Microsoft.Reliability", "C2A000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SshClient(string host, int port, string username, string password)
         public SshClient(string host, int port, string username, string password)
             : this(new PasswordConnectionInfo(host, port, username, password))
             : this(new PasswordConnectionInfo(host, port, username, password))
@@ -95,7 +95,7 @@ namespace Renci.SshNet
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <param name="keyFiles">Authentication private key file(s) .</param>
         /// <exception cref="ArgumentNullException"><paramref name="keyFiles"/> is null.</exception>
         /// <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="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.")]
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope", Justification = "Disposed in Dispose(bool) method.")]
         public SshClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
         public SshClient(string host, int port, string username, params PrivateKeyFile[] keyFiles)
             : this(new PrivateKeyConnectionInfo(host, port, username, 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>
         /// <returns>Returns an instance of <see cref="SshCommand"/> with execution results.</returns>
         /// <remarks>This method internally uses asynchronous calls.</remarks>
         /// <remarks>This method internally uses asynchronous calls.</remarks>
         /// <exception cref="ArgumentException">CommandText property is empty.</exception>
         /// <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="InvalidOperationException">Asynchronous operation is already in progress.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="SshConnectionException">Client is not connected.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="commandText"/> is null.</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="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="bufferSize">Size of the internal read buffer.</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)
         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.
             //  Ensure that connection is established.
@@ -257,7 +259,9 @@ namespace Renci.SshNet
         /// <param name="width">The width.</param>
         /// <param name="width">The width.</param>
         /// <param name="height">The height.</param>
         /// <param name="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</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)
         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);
             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="input">The input.</param>
         /// <param name="output">The output.</param>
         /// <param name="output">The output.</param>
         /// <param name="extendedOutput">The extended 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)
         public Shell CreateShell(Stream input, Stream output, Stream extendedOutput)
         {
         {
             return this.CreateShell(input, output, extendedOutput, string.Empty, 0, 0, 0, 0, null, 1024);
             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="height">The height.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="terminalModes">The terminal mode.</param>
         /// <param name="bufferSize">Size of the internal read buffer.</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)
         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();
             this._inputStream = new MemoryStream();
@@ -313,8 +321,10 @@ namespace Renci.SshNet
         /// <param name="rows">The rows.</param>
         /// <param name="rows">The rows.</param>
         /// <param name="width">The width.</param>
         /// <param name="width">The width.</param>
         /// <param name="height">The height.</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)
         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);
             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="input">The input.</param>
         /// <param name="output">The output.</param>
         /// <param name="output">The output.</param>
         /// <param name="extendedOutput">The extended 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)
         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);
             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="width">The width.</param>
         /// <param name="height">The height.</param>
         /// <param name="height">The height.</param>
         /// <param name="bufferSize">Size of the buffer.</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)
         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);
             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="height">The height.</param>
         /// <param name="bufferSize">Size of the buffer.</param>
         /// <param name="bufferSize">Size of the buffer.</param>
         /// <param name="terminalModeValues">The terminal mode values.</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)
         public ShellStream CreateShellStream(string terminalName, uint columns, uint rows, uint width, uint height, int bufferSize, IDictionary<TerminalModes, uint> terminalModeValues)
         {
         {
             //  Ensure that connection is established.
             //  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.
         /// Waits for the pending asynchronous command execution to complete.
         /// </summary>
         /// </summary>
         /// <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
         /// <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>
         /// <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)
         public string EndExecute(IAsyncResult asyncResult)
         {
         {

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

@@ -54,7 +54,11 @@ namespace Renci.SshNet.Sftp
         /// <summary>
         /// <summary>
         /// Initializes a new instance of the SubsystemSession class.
         /// Initializes a new instance of the SubsystemSession class.
         /// </summary>
         /// </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)
         public SubsystemSession(Session session, string subsystemName, TimeSpan operationTimeout)
         {
         {
             if (session == null)
             if (session == null)
@@ -227,6 +231,12 @@ namespace Renci.SshNet.Sftp
                         this._errorOccuredWaitHandle.Dispose();
                         this._errorOccuredWaitHandle.Dispose();
                         this._errorOccuredWaitHandle = null;
                         this._errorOccuredWaitHandle = null;
                     }
                     }
+
+                    if (this._channelClosedWaitHandle != null)
+                    {
+                        this._channelClosedWaitHandle.Dispose();
+                        this._channelClosedWaitHandle = null;
+                    }
                 }
                 }
 
 
                 // Note disposing has been done.
                 // Note disposing has been done.