send session-accept for file request

This commit is contained in:
Jefry Lagrange 2012-09-05 19:39:07 -04:00
parent dcab602b75
commit d16ee652c6
3 changed files with 15 additions and 5 deletions

View file

@ -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'

View file

@ -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

View file

@ -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')