show error message when we try to register to an unavailable transport. fixes #1574
This commit is contained in:
parent
ac9220116e
commit
7cdb177558
2 changed files with 14 additions and 12 deletions
|
@ -167,14 +167,14 @@ class Connection(ConnectionHandlers):
|
||||||
def _event_dispatcher(self, realm, event, data):
|
def _event_dispatcher(self, realm, event, data):
|
||||||
if realm == common.xmpp.NS_REGISTER:
|
if realm == common.xmpp.NS_REGISTER:
|
||||||
if event == common.xmpp.features_nb.REGISTER_DATA_RECEIVED:
|
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 \
|
if self.new_account_info and \
|
||||||
self.new_account_info['hostname'] == data[0]:
|
self.new_account_info['hostname'] == data[0]:
|
||||||
# it's a new account
|
# it's a new account
|
||||||
if not data[1]: # wrong answer
|
if not data[1]: # wrong answer
|
||||||
self.dispatch('ACC_NOT_OK', (
|
self.dispatch('ACC_NOT_OK', (
|
||||||
_('Transport %s answered wrongly to register request.') % \
|
_('Transport %s answered wrongly to register request: %s')\
|
||||||
data[0]))
|
% (data[0], data[3])))
|
||||||
return
|
return
|
||||||
req = data[1].asDict()
|
req = data[1].asDict()
|
||||||
req['username'] = self.new_account_info['name']
|
req['username'] = self.new_account_info['name']
|
||||||
|
@ -200,8 +200,8 @@ class Connection(ConnectionHandlers):
|
||||||
return
|
return
|
||||||
if not data[1]: # wrong answer
|
if not data[1]: # wrong answer
|
||||||
self.dispatch('ERROR', (_('Invalid answer'),
|
self.dispatch('ERROR', (_('Invalid answer'),
|
||||||
_('Transport %s answered wrongly to register request.') % \
|
_('Transport %s answered wrongly to register request: %s') % \
|
||||||
data[0]))
|
(data[0], data[3])))
|
||||||
return
|
return
|
||||||
is_form = data[2]
|
is_form = data[2]
|
||||||
if is_form:
|
if is_form:
|
||||||
|
|
|
@ -117,26 +117,28 @@ def getRegInfo(disp, host, info={}, sync=True):
|
||||||
|
|
||||||
def _ReceivedRegInfo(con, resp, agent):
|
def _ReceivedRegInfo(con, resp, agent):
|
||||||
iq=Iq('get',NS_REGISTER,to=agent)
|
iq=Iq('get',NS_REGISTER,to=agent)
|
||||||
if not isResultNode(resp):
|
if not isResultNode(resp):
|
||||||
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
|
return
|
||||||
tag=resp.getTag('query',namespace=NS_REGISTER)
|
tag=resp.getTag('query',namespace=NS_REGISTER)
|
||||||
if not tag:
|
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
|
return
|
||||||
df=tag.getTag('x',namespace=NS_DATA)
|
df=tag.getTag('x',namespace=NS_DATA)
|
||||||
if df:
|
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
|
return
|
||||||
df=DataForm(typ='form')
|
df=DataForm(typ='form')
|
||||||
for i in resp.getQueryPayload():
|
for i in resp.getQueryPayload():
|
||||||
if not isinstance(i, Node):
|
if not isinstance(i, Node):
|
||||||
pass
|
pass
|
||||||
elif i.getName()=='instructions':
|
elif i.getName()=='instructions':
|
||||||
df.addInstructions(i.getData())
|
df.addInstructions(i.getData())
|
||||||
else:
|
else:
|
||||||
df.setField(i.getName()).setValue(i.getData())
|
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):
|
def register(disp, host, info, cb):
|
||||||
""" Perform registration on remote server with provided info.
|
""" Perform registration on remote server with provided info.
|
||||||
|
|
Loading…
Add table
Reference in a new issue