Ajustei o código para corrigir os seguintes problemas:
Adicionado controle de máximo de dispositivos conectados por usuário: Agora o sistema verifica a cada conexão se o usuário já atingiu a quantidade máxima de dispositivos e nega novas conexões.
Cliente entre em loop infinito quando o servidor cai: Agora o cliente não entra em um loop infinito exibindo uma mensagem de erro e nem encerra inesperadamente quando o servidor cai. O get_sync_dir ainda não está reestabelecendo as conexões com o servidor, mas como a lógica dessa parte vai ter que ser alterada de qualquer modo na etapa 2, não me preocupei em fazer esse ajuste
Ajustei o código para corrigir os seguintes problemas: