Como posso fazer com que o Empathy tente se conectar novamente quando houver um problema de rede?

9

Acrescentei o Empathy à lista de aplicativos que são abertos por padrão e ele está configurado para se conectar automaticamente ao MSN quando iniciado, mas quando eu faço login no meu laptop, a conexão Wi-Fi demora alguns segundos para ficar pronta. Antes que a rede seja ativada, o Empathy já começou, tentou efetuar login no MSN e falhou, e não consigo conectá-lo depois disso.

Isso parece ser um bug no Empathy, mas como posso consertar isso ou, se não for possível, como posso atrasar o início até que a rede esteja ativa?

    
por Ricardo Reyes 28.07.2010 / 21:50

3 respostas

6

Aparentemente, esse é um bug conhecido no Empathy, então decidi lançar o Empathy a partir de um script que verifica se a rede está ativa (conectando-se ao link , a verdadeira pulsação da internet :) Se a rede não estiver funcionando, ela irá dormir por 5 segundos e tentar novamente, até tentar 30 vezes

Este é o script (chamado waitfornet.py )

#!/usr/bin/python

from urllib2 import urlopen, URLError
from subprocess import Popen
from time import sleep
from sys import argv

MAX_TRIES = 30
DELAY = 5

if len (argv) < 2:
    print ('Check for network connectivity and run a command once the net is up')
    print ('Tries up to %d times waiting %d seconds between each try' % (MAX_TRIES, DELAY))
    print ('\nUSAGE: python waitfornet.py <command to run>')
else:
    while True:
        MAX_TRIES -= 1
        if MAX_TRIES < 0:
            raise ValueError ('Reached the max iteration count and the net is still down')

        try:
            data = urlopen('http://www.google.com')
        except URLError:
            # if there's a problem connecting to google, that must mean
            # that the net is still down, so sleep 5 seconds and try again
            print ('Internet is down... retrying...')
            sleep (DELAY)
            continue

        # if you got here it means that the urlopen succeded
        pid = Popen([argv[1], ' '.join(argv[1:])]).pid
        break

e é assim que eu o inicio no menu "Startup Applications":

~/scripts/waitfornet.py empathy
    
por Ricardo Reyes 31.07.2010 / 01:41
2

Parece que o Empathy pode precisar de um patch para fazer esse tipo de coisa internamente. Mas você deve ser capaz de cutucar o Empathy para fazer a coisa certa, desconectando-se da sua rede e reconectando-se.

Eu aparentemente tive bugs com o Empathy recusando a conexão com várias redes em vários momentos. Mas deve dar uma contagem regressiva "Will tentará novamente em X segundos".

Mas isso vai tomar código e, se você quiser, um relatório de bug precisa ser feito.

    
por Martin Owens -doctormo- 28.07.2010 / 23:10
1

Eu escrevi um script especificamente para superar esse problema problema . Esse script (baseado em python e D-Bus) conectará a empatia à rede toda vez que a rede estiver on-line. Mesmo se a conexão cair e se reconectar, o script reconectará automaticamente a empatia novamente.

Espero que você goste. Por favor, deixe um comentário se você precisar de melhorias.

    
por Ishan Thilina Somasiri 28.09.2011 / 18:59