From d97e8a8826dc2bc2efdae7a332b6e9e10814e040 Mon Sep 17 00:00:00 2001 From: PierreAronnax Date: Tue, 25 Oct 2011 17:28:32 +0200 Subject: [PATCH 1/3] SparkleListenerTCP: Fixing Reconnect Calling socket.Connect again after socket.Close causes an ObjectDisposedException. Recreating the socket before connecting fixes this. --- SparkleLib/SparkleListenerTcp.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs index 15274b9b..c844bf02 100755 --- a/SparkleLib/SparkleListenerTcp.cs +++ b/SparkleLib/SparkleListenerTcp.cs @@ -39,7 +39,6 @@ namespace SparkleLib { base (server, folder_identifier) { base.channels.Add (folder_identifier); - this.socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.connected = false; } @@ -70,9 +69,11 @@ namespace SparkleLib { // Connect and subscribe to the channel int port = Server.Port; if (port < 0) port = 9999; - this.socket.Connect (Server.Host, port); lock (this.mutex) { + this.socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + this.socket.Connect (Server.Host, port); + base.is_connecting = false; this.connected = true; From 9204fef03df1d5e267407cc096db9332ad23bffd Mon Sep 17 00:00:00 2001 From: PierreAronnax Date: Tue, 25 Oct 2011 20:16:20 +0200 Subject: [PATCH 2/3] SparkleListenerBase: Fixing delivering of queued messages. Removing a list item from inside a foreach causes a "InvalidOperationException: Collection Was Modified" error. First creating a copy fixes this. --- SparkleLib/SparkleListenerBase.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index e7ae5c4f..4914b69a 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -148,7 +148,7 @@ namespace SparkleLib { public bool HasQueueDownAnnouncement (string folder_identifier) { - foreach (SparkleAnnouncement announcement in this.queue_down) { + foreach (SparkleAnnouncement announcement in this.queue_down.GetRange(0, this.queue_down.Count)) { if (announcement.FolderIdentifier.Equals (folder_identifier)) { this.queue_down.Remove (announcement); return true; @@ -174,9 +174,9 @@ namespace SparkleLib { Connected (); if (this.queue_up.Count > 0) { - SparkleHelpers.DebugInfo ("Listener", "Delivering queued messages..."); + SparkleHelpers.DebugInfo ("Listener", "Delivering " + this.queue_up.Count + " queued messages..."); - foreach (SparkleAnnouncement announcement in this.queue_up) { + foreach (SparkleAnnouncement announcement in this.queue_up.GetRange(0, this.queue_up.Count)) { AnnounceBase (announcement); this.queue_up.Remove (announcement); } From 1b0e504a0e566a3ea4511542e56b46c937f8fc8e Mon Sep 17 00:00:00 2001 From: PierreAronnax Date: Wed, 26 Oct 2011 18:43:07 +0200 Subject: [PATCH 3/3] OpenSparkleShareFolder support for Fixing https://github.com/wimh/SparkleShare/issues/16 --- SparkleShare/Windows/SparkleController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SparkleShare/Windows/SparkleController.cs b/SparkleShare/Windows/SparkleController.cs index 630c4756..1a4cdbe2 100644 --- a/SparkleShare/Windows/SparkleController.cs +++ b/SparkleShare/Windows/SparkleController.cs @@ -160,7 +160,7 @@ namespace SparkleShare { public override void OpenSparkleShareFolder (string subfolder) { Process process = new Process(); - process.StartInfo.Arguments = ",/root," + SparkleHelpers.CombineMore(SparklePaths.SparklePath, subfolder); + process.StartInfo.Arguments = ",/root," + SparkleHelpers.CombineMore(SparkleConfig.DefaultConfig.FoldersPath, subfolder); process.StartInfo.FileName = "explorer"; process.Start();