send session-accept for file request
This commit is contained in:
parent
dcab602b75
commit
d16ee652c6
3 changed files with 15 additions and 5 deletions
|
@ -2000,6 +2000,13 @@ class FileRequestReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
|
||||||
self.file_props.receiver = self.conn._ft_get_our_jid()
|
self.file_props.receiver = self.conn._ft_get_our_jid()
|
||||||
else:
|
else:
|
||||||
file_tag = desc.getTag('request').getTag('file')
|
file_tag = desc.getTag('request').getTag('file')
|
||||||
|
h = file_tag.getTag('hash')
|
||||||
|
n = file_tag.getTag('name')
|
||||||
|
if h:
|
||||||
|
file_info = self.conn.get_files_info(hash_=h)
|
||||||
|
elif n:
|
||||||
|
file_info = self.conn.get_files_info(name=n)
|
||||||
|
self.file_props.file_name = file_info['file-name']
|
||||||
self.file_props.sender = self.conn._ft_get_our_jid()
|
self.file_props.sender = self.conn._ft_get_our_jid()
|
||||||
self.file_props.receiver = self.fjid
|
self.file_props.receiver = self.fjid
|
||||||
self.file_props.type_ = 's'
|
self.file_props.type_ = 's'
|
||||||
|
|
|
@ -47,6 +47,7 @@ STATE_TRANSFERING = 6
|
||||||
|
|
||||||
|
|
||||||
class JingleFileTransfer(JingleContent):
|
class JingleFileTransfer(JingleContent):
|
||||||
|
|
||||||
def __init__(self, session, transport=None, file_props=None,
|
def __init__(self, session, transport=None, file_props=None,
|
||||||
use_security=False):
|
use_security=False):
|
||||||
JingleContent.__init__(self, session, transport)
|
JingleContent.__init__(self, session, transport)
|
||||||
|
@ -117,6 +118,10 @@ class JingleFileTransfer(JingleContent):
|
||||||
gajim.nec.push_incoming_event(FileRequestReceivedEvent(None,
|
gajim.nec.push_incoming_event(FileRequestReceivedEvent(None,
|
||||||
conn=self.session.connection, stanza=stanza, jingle_content=content,
|
conn=self.session.connection, stanza=stanza, jingle_content=content,
|
||||||
FT_content=self))
|
FT_content=self))
|
||||||
|
if self.session.request:
|
||||||
|
# accept the request
|
||||||
|
self.session.approve_content(self.media, self.name)
|
||||||
|
self.session.accept_session()
|
||||||
|
|
||||||
def __on_session_initiate_sent(self, stanza, content, error, action):
|
def __on_session_initiate_sent(self, stanza, content, error, action):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -86,6 +86,7 @@ class JingleSession(object):
|
||||||
self.weinitiate = weinitiate
|
self.weinitiate = weinitiate
|
||||||
# Are we requesting or offering a file?
|
# Are we requesting or offering a file?
|
||||||
self.werequest = werequest
|
self.werequest = werequest
|
||||||
|
self.request = False
|
||||||
# what state is session in? (one from JingleStates)
|
# what state is session in? (one from JingleStates)
|
||||||
self.state = JingleStates.ended
|
self.state = JingleStates.ended
|
||||||
if not sid:
|
if not sid:
|
||||||
|
@ -516,17 +517,14 @@ class JingleSession(object):
|
||||||
request = \
|
request = \
|
||||||
jingle.getTag('content').getTag('description').getTag('request')
|
jingle.getTag('content').getTag('description').getTag('request')
|
||||||
if request:
|
if request:
|
||||||
|
self.request = True
|
||||||
h = request.getTag('file').getTag('hash')
|
h = request.getTag('file').getTag('hash')
|
||||||
n = request.getTag('file').getTag('name')
|
n = request.getTag('file').getTag('name')
|
||||||
if h:
|
if h:
|
||||||
file_info = self.connection.get_files_info(hash_=h)
|
file_info = self.connection.get_files_info(hash_=h)
|
||||||
elif n:
|
elif n:
|
||||||
file_info = self.connection.get_files_info(name=n)
|
file_info = self.connection.get_files_info(name=n)
|
||||||
if file_info:
|
if not file_info:
|
||||||
file_props = FilesProp.getFileProp(self.connection.name,
|
|
||||||
self.sid)
|
|
||||||
file_props.file_name = file_info['file-name']
|
|
||||||
else:
|
|
||||||
log.warning('The peer ' + self.peerjid + \
|
log.warning('The peer ' + self.peerjid + \
|
||||||
' is requesting a ' + \
|
' is requesting a ' + \
|
||||||
'file that we dont have')
|
'file that we dont have')
|
||||||
|
|
Loading…
Add table
Reference in a new issue