IBB supports file request
This commit is contained in:
parent
a3c486f2b1
commit
c22f5db122
2 changed files with 16 additions and 7 deletions
|
@ -69,13 +69,15 @@ class JingleFileTransfer(JingleContent):
|
||||||
self.callbacks['iq-result'] += [self.__on_iq_result]
|
self.callbacks['iq-result'] += [self.__on_iq_result]
|
||||||
self.use_security = use_security
|
self.use_security = use_security
|
||||||
self.file_props = file_props
|
self.file_props = file_props
|
||||||
if file_props is None:
|
self.weinitiate = self.session.weinitiate
|
||||||
self.weinitiate = False
|
self.werequest = self.session.werequest
|
||||||
else:
|
|
||||||
self.weinitiate = True
|
|
||||||
if self.file_props is not None:
|
if self.file_props is not None:
|
||||||
self.file_props.sender = session.ourjid
|
if self.session.werequest:
|
||||||
self.file_props.receiver = session.peerjid
|
self.file_props.sender = self.session.peerjid
|
||||||
|
self.file_props.receiver = self.session.ourjid
|
||||||
|
else:
|
||||||
|
self.file_props.sender = self.session.ourjid
|
||||||
|
self.file_props.receiver = self.session.peerjid
|
||||||
self.file_props.session_type = 'jingle'
|
self.file_props.session_type = 'jingle'
|
||||||
self.file_props.sid = session.sid
|
self.file_props.sid = session.sid
|
||||||
self.file_props.transfered_size = []
|
self.file_props.transfered_size = []
|
||||||
|
@ -172,6 +174,9 @@ class JingleFileTransfer(JingleContent):
|
||||||
response = stanza.buildReply('result')
|
response = stanza.buildReply('result')
|
||||||
response.delChild(response.getQuery())
|
response.delChild(response.getQuery())
|
||||||
con.connection.send(response)
|
con.connection.send(response)
|
||||||
|
# If we are requesting we don't have the file
|
||||||
|
if self.session.werequest:
|
||||||
|
raise xmpp.NodeProcessed
|
||||||
# We send the file
|
# We send the file
|
||||||
self.__state_changed(STATE_TRANSFERING)
|
self.__state_changed(STATE_TRANSFERING)
|
||||||
raise xmpp.NodeProcessed
|
raise xmpp.NodeProcessed
|
||||||
|
@ -359,6 +364,10 @@ class JingleFileTransfer(JingleContent):
|
||||||
else:
|
else:
|
||||||
return self.weinitiate
|
return self.weinitiate
|
||||||
|
|
||||||
|
def start_IBB_transfer(self):
|
||||||
|
if self.file_props.type_ == 's':
|
||||||
|
self.__state_changed(STATE_TRANSFERING)
|
||||||
|
|
||||||
|
|
||||||
def get_content(desc):
|
def get_content(desc):
|
||||||
return JingleFileTransfer
|
return JingleFileTransfer
|
||||||
|
|
|
@ -366,7 +366,6 @@ class JingleSession(object):
|
||||||
error_name = child.getName()
|
error_name = child.getName()
|
||||||
self.__dispatch_error(error_name, text, error.getAttr('type'))
|
self.__dispatch_error(error_name, text, error.getAttr('type'))
|
||||||
|
|
||||||
# FIXME: Not sure when we would want to do that...
|
|
||||||
def transport_replace(self):
|
def transport_replace(self):
|
||||||
transport = JingleTransportIBB()
|
transport = JingleTransportIBB()
|
||||||
# For debug only, delete this and replace for a function
|
# For debug only, delete this and replace for a function
|
||||||
|
@ -399,6 +398,7 @@ class JingleSession(object):
|
||||||
self.contents[(creator,name)].state = STATE_TRANSPORT_REPLACE
|
self.contents[(creator,name)].state = STATE_TRANSPORT_REPLACE
|
||||||
self.__ack(stanza, jingle, error, action)
|
self.__ack(stanza, jingle, error, action)
|
||||||
self.__session_accept()
|
self.__session_accept()
|
||||||
|
self.contents[(creator,name)].start_IBB_transfer()
|
||||||
else:
|
else:
|
||||||
stanza, jingle = self.__make_jingle('transport-reject')
|
stanza, jingle = self.__make_jingle('transport-reject')
|
||||||
content = jingle.setTag('content', attrs={'creator': creator,
|
content = jingle.setTag('content', attrs={'creator': creator,
|
||||||
|
|
Loading…
Add table
Reference in a new issue