                 # recommend all clients sync
                 for id, ds_client of @diffsync_clients
                     ds_client.remote.sync_ready()
+            @_filesystem_sync_lock = false
             cb?()
 
     add_client: (socket, client_id) =>

                @diffsync_fileserver = new DiffSyncFile_server @, (err, ignore_content) =>
                    if err
                        winston.debug("@diffsync_fileclient.sync -- making new server failed: #{err}")
                        cb(err); return
                    @diffsync_fileclient = new DiffSyncFile_client(@diffsync_fileserver)
                    @diffsync_fileclient.live = @content
                    @diffsync_fileclient.sync (err) =>
                        if err
                            winston.debug("@diffsync_fileclient.sync -- making server worked but re-sync failed -- #{err}")
                            cb?("codemirror fileclient sync error -- '#{err}'")
                        else
                            cb?()
                return


        @connect(@server)
        @server.connect(@)

# The CodeMirrorDiffSyncHub class represents a
# downstream remote client for this local hub.  There may be dozens of thes.
# The local hub has no upstream server, except the on-disk file itself.
#
# NOTE: These have *nothing* a priori to do with CodeMirror -- the name is
# historical and should be changed. TODO.
#
class CodeMirrorDiffSyncHub
    constructor : (@socket, @session_uuid, @client_id) ->

