pop up a (useless) DataFormWidget when someone initiates a session negotiation
This commit is contained in:
parent
00209abaf9
commit
46bc373cc3
|
@ -1197,6 +1197,22 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
self.dispatch('HTTP_AUTH', (method, url, id, iq_obj, msg));
|
self.dispatch('HTTP_AUTH', (method, url, id, iq_obj, msg));
|
||||||
raise common.xmpp.NodeProcessed
|
raise common.xmpp.NodeProcessed
|
||||||
|
|
||||||
|
def _FeatureNegCB(self, con, stanza):
|
||||||
|
gajim.log.debug('FeatureNegCB')
|
||||||
|
feature = stanza.getTag('feature')
|
||||||
|
form = common.xmpp.DataForm(node=feature.getTag('x'))
|
||||||
|
|
||||||
|
if form['FORM_TYPE'] == 'urn:xmpp:ssn':
|
||||||
|
self.dispatch('SESSION_NEG', (stanza.getFrom(), stanza.getThread(), form))
|
||||||
|
else:
|
||||||
|
reply = stanza.buildReply()
|
||||||
|
reply.setType('error')
|
||||||
|
|
||||||
|
reply.addChild(feature)
|
||||||
|
reply.addChild(node=xmpp.ErrorNode('service-unavailable', typ='cancel'))
|
||||||
|
|
||||||
|
con.send(reply)
|
||||||
|
|
||||||
def _ErrorCB(self, con, iq_obj):
|
def _ErrorCB(self, con, iq_obj):
|
||||||
gajim.log.debug('ErrorCB')
|
gajim.log.debug('ErrorCB')
|
||||||
if iq_obj.getQueryNS() == common.xmpp.NS_VERSION:
|
if iq_obj.getQueryNS() == common.xmpp.NS_VERSION:
|
||||||
|
@ -1403,6 +1419,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
common.xmpp.NS_HTTP_AUTH:
|
common.xmpp.NS_HTTP_AUTH:
|
||||||
self._HttpAuthCB(con, msg)
|
self._HttpAuthCB(con, msg)
|
||||||
return
|
return
|
||||||
|
if msg.getTag('feature') and msg.getTag('feature').namespace == \
|
||||||
|
common.xmpp.NS_FEATURE:
|
||||||
|
self._FeatureNegCB(con, msg)
|
||||||
|
return
|
||||||
|
|
||||||
msgtxt = msg.getBody()
|
msgtxt = msg.getBody()
|
||||||
msghtml = msg.getXHTML()
|
msghtml = msg.getXHTML()
|
||||||
mtype = msg.getType()
|
mtype = msg.getType()
|
||||||
|
|
|
@ -103,6 +103,8 @@ import message_control
|
||||||
from chat_control import ChatControlBase
|
from chat_control import ChatControlBase
|
||||||
from atom_window import AtomWindow
|
from atom_window import AtomWindow
|
||||||
|
|
||||||
|
import negotiation
|
||||||
|
|
||||||
from common import exceptions
|
from common import exceptions
|
||||||
from common.zeroconf import connection_zeroconf
|
from common.zeroconf import connection_zeroconf
|
||||||
from common import dbus_support
|
from common import dbus_support
|
||||||
|
@ -1653,6 +1655,11 @@ class Interface:
|
||||||
atom_entry, = data
|
atom_entry, = data
|
||||||
AtomWindow.newAtomEntry(atom_entry)
|
AtomWindow.newAtomEntry(atom_entry)
|
||||||
|
|
||||||
|
def handle_session_negotiation(self, account, data):
|
||||||
|
jid, thread_id, form = data
|
||||||
|
# XXX check negotiation state, etc.
|
||||||
|
negotiation.FeatureNegotiationWindow(account, jid, thread_id, form)
|
||||||
|
|
||||||
def handle_event_privacy_lists_received(self, account, data):
|
def handle_event_privacy_lists_received(self, account, data):
|
||||||
# ('PRIVACY_LISTS_RECEIVED', account, list)
|
# ('PRIVACY_LISTS_RECEIVED', account, list)
|
||||||
if not self.instances.has_key(account):
|
if not self.instances.has_key(account):
|
||||||
|
@ -2090,6 +2097,7 @@ class Interface:
|
||||||
'SEARCH_FORM': self.handle_event_search_form,
|
'SEARCH_FORM': self.handle_event_search_form,
|
||||||
'SEARCH_RESULT': self.handle_event_search_result,
|
'SEARCH_RESULT': self.handle_event_search_result,
|
||||||
'RESOURCE_CONFLICT': self.handle_event_resource_conflict,
|
'RESOURCE_CONFLICT': self.handle_event_resource_conflict,
|
||||||
|
'SESSION_NEG': self.handle_session_negotiation,
|
||||||
}
|
}
|
||||||
gajim.handlers = self.handlers
|
gajim.handlers = self.handlers
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue