From e1019a34b42234e51b6ac59dad85df1ad864d81f Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Thu, 20 Jun 2013 09:39:10 +0200 Subject: [PATCH] [sip] Utilisation d'erreur custom --- sip/asterisk.py | 16 +++++++++++----- sip/asterisk_reload_conf.py | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sip/asterisk.py b/sip/asterisk.py index b9c6f7aa..5eb43c3c 100644 --- a/sip/asterisk.py +++ b/sip/asterisk.py @@ -19,6 +19,9 @@ import lc_ldap.shortcuts class NullRecv(EnvironmentError): pass +class AsteriskError(ValueError): + pass + class Profile(object): def __init__(self, sql_params, database): self.sql_params = sql_params @@ -177,7 +180,7 @@ class Manager(object): self._event=[] self._event_callback = {} self._toread = "" - self.privilege = [] + self.fullybooted = False self.username = username self.password = password @@ -187,7 +190,7 @@ class Manager(object): self.connect() def _FullyBooted(self, manager, params): - manager.privilege = params['Privilege'].split(',') + manager.fullybooted = True def _recv(self): data = self.socket.recv(1024) @@ -244,7 +247,7 @@ class Manager(object): del(self._response[id]) self._pending_action.remove(id) if response[0] == 'Error': - raise ValueError(response) + raise AsteriskError('%s. Action:%s params:%s' % (response[1]['Message'], name, params)) return response def action(self, name, **params): @@ -260,7 +263,8 @@ class Manager(object): if len(msg)>1: self._toread += msg[1] self.login() - self.process_events() + while not self.fullybooted: + self.process_events() self.events(self.event) def register_events_callback(self, event, func): @@ -285,7 +289,9 @@ class Manager(object): def logoff(self): """ Logoff Manager""" - self.action('logoff') + response = self.action('logoff') + if response[0] == 'Goodbye': + self.fullybooted = False def events(self, param): """Control Event Flow diff --git a/sip/asterisk_reload_conf.py b/sip/asterisk_reload_conf.py index bea75af3..07b88df1 100755 --- a/sip/asterisk_reload_conf.py +++ b/sip/asterisk_reload_conf.py @@ -26,7 +26,7 @@ def reload_config(config): manager.connect() for module in reload_srv[config]: try:manager.reload(module) - except ValueError: pass + except asterisk.AsteriskError: pass manager.logoff() if __name__ == '__main__' :