show error message when we try to register to an unavailable transport. fixes #1574

This commit is contained in:
Yann Leboulanger 2006-11-22 19:49:41 +00:00
parent ac9220116e
commit 7cdb177558
2 changed files with 14 additions and 12 deletions

View file

@ -167,14 +167,14 @@ class Connection(ConnectionHandlers):
def _event_dispatcher(self, realm, event, data):
if realm == common.xmpp.NS_REGISTER:
if event == common.xmpp.features_nb.REGISTER_DATA_RECEIVED:
# data is (agent, DataFrom, is_form)
# data is (agent, DataFrom, is_form, error_msg)
if self.new_account_info and \
self.new_account_info['hostname'] == data[0]:
# it's a new account
if not data[1]: # wrong answer
self.dispatch('ACC_NOT_OK', (
_('Transport %s answered wrongly to register request.') % \
data[0]))
_('Transport %s answered wrongly to register request: %s')\
% (data[0], data[3])))
return
req = data[1].asDict()
req['username'] = self.new_account_info['name']
@ -200,8 +200,8 @@ class Connection(ConnectionHandlers):
return
if not data[1]: # wrong answer
self.dispatch('ERROR', (_('Invalid answer'),
_('Transport %s answered wrongly to register request.') % \
data[0]))
_('Transport %s answered wrongly to register request: %s') % \
(data[0], data[3])))
return
is_form = data[2]
if is_form:

View file

@ -117,26 +117,28 @@ def getRegInfo(disp, host, info={}, sync=True):
def _ReceivedRegInfo(con, resp, agent):
iq=Iq('get',NS_REGISTER,to=agent)
if not isResultNode(resp):
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False))
if not isResultNode(resp):
error_msg = resp.getErrorMsg()
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False,error_msg))
return
tag=resp.getTag('query',namespace=NS_REGISTER)
if not tag:
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False))
error_msg = resp.getErrorMsg()
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False,error_msg))
return
df=tag.getTag('x',namespace=NS_DATA)
if df:
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,DataForm(node=df),True))
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,DataForm(node=df),True,''))
return
df=DataForm(typ='form')
for i in resp.getQueryPayload():
if not isinstance(i, Node):
pass
elif i.getName()=='instructions':
elif i.getName()=='instructions':
df.addInstructions(i.getData())
else:
else:
df.setField(i.getName()).setValue(i.getData())
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent,df,False))
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent,df,False,''))
def register(disp, host, info, cb):
""" Perform registration on remote server with provided info.