Comment puis-je faire en sorte qu'Empathy réessaye de se connecter en cas de problème de réseau

9

J'ai ajouté Empathy à la liste des applications qui s'ouvrent par défaut, et il est configuré pour se connecter automatiquement à MSN au démarrage, mais lorsque je me connecte à mon ordinateur portable, la connexion wifi prend quelques secondes pour être prête. Avant que le net ne soit en place, Empathy a déjà commencé, a essayé de se connecter à MSN et a échoué, et je n'arrive pas à le faire se connecter après cela.

Cela semble être un bogue dans Empathy, mais comment puis-je obtenir un correctif pour cela, ou si ce n'est pas possible, comment puis-je retarder son démarrage jusqu'à ce que le réseau soit en place?

Ricardo Reyes
la source

Réponses:

6

Apparemment, c'est un bogue connu dans Empathy, j'ai donc décidé de lancer Empathy à partir d'un script qui vérifie si le réseau est en place (connexion à http://www.google.com , le véritable battement de cœur d'Internet :) Si le réseau ne fonctionne pas, il dormira pendant 5 secondes et réessayera jusqu'à ce qu'il ait essayé 30 fois

Ceci est le script (nommé 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

et voici comment je le lance depuis le menu "Applications de démarrage":

~/scripts/waitfornet.py empathy
Ricardo Reyes
la source
2

On dirait qu'Empathy peut avoir besoin d'un patch pour faire ce genre de chose en interne. Mais vous devriez être en mesure de pousser Empathy à faire la bonne chose en vous déconnectant de votre réseau et en vous reconnectant.

J'ai apparemment eu des bugs avec Empathy refusant la connexion à un tas de réseaux à différents moments. Mais cela devrait donner un compte à rebours "Réessayera dans X secondes."

Mais cela prendra du code et si vous le souhaitez, un rapport de bogue doit être fait.

Martin Owens -doctormo-
la source
1

J'ai écrit un script spécialement pour surmonter ce problème . Ce script (basé sur python et D-Bus) connectera l'empathie au réseau à chaque fois que le réseau est en ligne. Même si la connexion s'éteint et se reconnecte, le script reconnecte automatiquement l'empathie.

J'espère que vous l'apprécierez. Veuillez laisser un commentaire si vous avez besoin d'améliorations.

Ishan Thilina Somasiri
la source