diff --git a/src/common/connection.py b/src/common/connection.py
index 4dc864ddb2d08d60796ca2631845dda80633c392..73a3005b310448bd888fc73f3a122beb3923d9a1 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -167,14 +167,14 @@ def _connection_lost(self):
 	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 @@ def _on_register_result(result):
 					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:
diff --git a/src/common/xmpp/features_nb.py b/src/common/xmpp/features_nb.py
index aa51898702394223a1cf45925dc50114d9f3b3d4..0b754e1ef085c3470ce6a4b9d5acd57b23709dd2 100644
--- a/src/common/xmpp/features_nb.py
+++ b/src/common/xmpp/features_nb.py
@@ -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.