9da1a2f48b
Something weird is happening with ElementX iOS. When `SlidingSync::stop_sync` is called, the internal message `SyncLoopStop` has time to be sent in the internal channel, but iOS decides to suspend the code before the sync-loop processes it. When ElementX decides to start the sync-loop again, it immediately processes the `SyncLoopStop` message, and… stops the sync-loop. This patch ensures that `SlidingSync::sync` drains the internal channel before starting the sync-loop for real. `tokio::sync::mpsc::Receiver` type has no `drain` method, so this patch implements its own logic by calling `try_recv` in a loop, until it returns `Err(TryRecvError::Empty)`.