diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index d0fc7afb..5fc878fc 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -153,7 +153,7 @@ namespace SparkleLib { } } else { SparkleHelpers.DebugInfo ("Listener", - "Already received or sent message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); + "Already processed message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); } } @@ -199,7 +199,7 @@ namespace SparkleLib { SparkleHelpers.DebugInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); if (this.IsRecentAnnounement(announcement) ){ - SparkleHelpers.DebugInfo ("Listener", "Ignoring previously received message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + SparkleHelpers.DebugInfo ("Listener", "Ignoring previously processed message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); return; } diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs index f93b4188..6f464c13 100755 --- a/SparkleLib/SparkleListenerTcp.cs +++ b/SparkleLib/SparkleListenerTcp.cs @@ -93,11 +93,14 @@ namespace SparkleLib { if (bytes_read > 0) { string received = Encoding.UTF8.GetString (bytes); - string folder_identifier = received.Substring (0, received.IndexOf ("!")); - string message = this.CleanMessage (received.Substring (received.IndexOf ("!") + 1)); - if (!message.Equals("connected...")) + string line = received.Substring (0, received.IndexOf ("\n")); + if (!line.Contains ("!")) + continue; + string folder_identifier = line.Substring (0, line.IndexOf ("!")); + string message = this.CleanMessage (line.Substring (line.IndexOf ("!") + 1)); + if (!folder_identifier.Equals("debug") && + !String.IsNullOrEmpty(message)) OnAnnouncement (new SparkleAnnouncement (folder_identifier, message)); - } else { SparkleHelpers.DebugInfo ("ListenerTcp", "Error on socket"); diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 69532e16..ef28e979 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -260,7 +260,7 @@ namespace SparkleLib { !announcement.Message.Equals (CurrentRevision)) { while (this.IsSyncing ()) { - //nothing just wait + System.Threading.Thread.Sleep (100); } SparkleHelpers.DebugInfo ("Listener", "Syncing due to Announcement"); if (!announcement.Message.Equals (CurrentRevision)) @@ -448,6 +448,7 @@ namespace SparkleLib { if (SyncStatusChanged != null) SyncStatusChanged (SyncStatus.SyncDown); + string pre_sync_revision = CurrentRevision; if (SyncDown ()) { SparkleHelpers.DebugInfo ("SyncDown", "[" + Name + "] Done"); this.server_online = true; @@ -455,24 +456,26 @@ namespace SparkleLib { if (SyncStatusChanged != null) SyncStatusChanged (SyncStatus.Idle); - List change_sets = GetChangeSets (1); - if (change_sets != null && change_sets.Count > 0) { - SparkleChangeSet change_set = change_sets [0]; + if (pre_sync_revision != CurrentRevision) { + List change_sets = GetChangeSets (1); + if (change_sets != null && change_sets.Count > 0) { + SparkleChangeSet change_set = change_sets [0]; - bool note_added = false; - foreach (string added in change_set.Added) { - if (added.Contains (".notes")) { - if (NewNote != null) - NewNote (change_set.User.Name, change_set.User.Email); + bool note_added = false; + foreach (string added in change_set.Added) { + if (added.Contains (".notes")) { + if (NewNote != null) + NewNote (change_set.User.Name, change_set.User.Email); - note_added = true; - break; + note_added = true; + break; + } } - } - if (!note_added) { - if (NewChangeSet != null) - NewChangeSet (change_set); + if (!note_added) { + if (NewChangeSet != null) + NewChangeSet (change_set); + } } }