diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index 16f5d3418b7b3d314d5270fbc9775d76b7794b57..06bb22c836e336d8613e68447ba72be0f9290569 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -2000,6 +2000,13 @@ class FileRequestReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): self.file_props.receiver = self.conn._ft_get_our_jid() else: 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.receiver = self.fjid self.file_props.type_ = 's' diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py index 851a1628907fe6841347d01e3d9f274c0653eb53..e605e24d31b0bef18ce9b8f7525bd3e7b3e5b882 100644 --- a/src/common/jingle_ft.py +++ b/src/common/jingle_ft.py @@ -47,6 +47,7 @@ STATE_TRANSFERING = 6 class JingleFileTransfer(JingleContent): + def __init__(self, session, transport=None, file_props=None, use_security=False): JingleContent.__init__(self, session, transport) @@ -117,6 +118,10 @@ class JingleFileTransfer(JingleContent): gajim.nec.push_incoming_event(FileRequestReceivedEvent(None, conn=self.session.connection, stanza=stanza, jingle_content=content, 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): pass diff --git a/src/common/jingle_session.py b/src/common/jingle_session.py index 44cab74ed899be4d6684ff0348bba1bdcb9225b8..8b5814d57c6d6fc5873e5bc021d36ba46b575de1 100644 --- a/src/common/jingle_session.py +++ b/src/common/jingle_session.py @@ -86,6 +86,7 @@ class JingleSession(object): self.weinitiate = weinitiate # Are we requesting or offering a file? self.werequest = werequest + self.request = False # what state is session in? (one from JingleStates) self.state = JingleStates.ended if not sid: @@ -516,17 +517,14 @@ class JingleSession(object): request = \ jingle.getTag('content').getTag('description').getTag('request') if request: + self.request = True h = request.getTag('file').getTag('hash') n = request.getTag('file').getTag('name') if h: file_info = self.connection.get_files_info(hash_=h) elif n: file_info = self.connection.get_files_info(name=n) - if file_info: - file_props = FilesProp.getFileProp(self.connection.name, - self.sid) - file_props.file_name = file_info['file-name'] - else: + if not file_info: log.warning('The peer ' + self.peerjid + \ ' is requesting a ' + \ 'file that we dont have')