diff --git a/src/common/jingle.py b/src/common/jingle.py
index 3f3c8f726250aa9f52805c2a505e49f570a52fa3..f4de9eb7a947c7ba4f9ecd55b73ba23ebc42e865 100644
--- a/src/common/jingle.py
+++ b/src/common/jingle.py
@@ -38,6 +38,7 @@ from jingle_session import JingleSession, JingleStates
 if gajim.HAVE_FARSIGHT:
     from jingle_rtp import JingleAudio, JingleVideo
 from jingle_ft import JingleFileTransfer
+from jingle_transport import JingleTransportSocks5, JingleTransportIBB
 
 import logging
 logger = logging.getLogger('gajim.c.jingle')
@@ -78,11 +79,11 @@ class ConnectionJingle(object):
         """
         # get data
         jid = helpers.get_full_jid_from_iq(stanza)
-        id = stanza.getID()
+        id_ = stanza.getID()
 
-        if (jid, id) in self.__iq_responses.keys():
-            self.__iq_responses[(jid, id)].on_stanza(stanza)
-            del self.__iq_responses[(jid, id)]
+        if (jid, id_) in self.__iq_responses.keys():
+            self.__iq_responses[(jid, id_)].on_stanza(stanza)
+            del self.__iq_responses[(jid, id_)]
             raise xmpp.NodeProcessed
 
         jingle = stanza.getTag('jingle')
@@ -93,7 +94,7 @@ class ConnectionJingle(object):
         else:
             sid = None
             for sesn in self._sessions.values():
-                if id in sesn.iq_ids:
+                if id_ in sesn.iq_ids:
                     sesn.on_stanza(stanza)
             return
 
@@ -101,14 +102,15 @@ class ConnectionJingle(object):
         if sid not in self._sessions:
             #TODO: tie-breaking and other things...
             newjingle = JingleSession(con=self, weinitiate=False, jid=jid,
-                iq_id=id, sid=sid)
+                iq_id=id_, sid=sid)
             self._sessions[sid] = newjingle
 
         # we already have such session in dispatcher...
-        self._sessions[sid].collect_iq_id(id)
+        self._sessions[sid].collect_iq_id(id_)
         self._sessions[sid].on_stanza(stanza)
         # Delete invalid/unneeded sessions
-        if sid in self._sessions and self._sessions[sid].state == JingleStates.ended:
+        if sid in self._sessions and \
+        self._sessions[sid].state == JingleStates.ended:
             self.delete_jingle_session(sid)
 
         raise xmpp.NodeProcessed
@@ -142,16 +144,20 @@ class ConnectionJingle(object):
     def start_file_transfer(self, jid, file_props):
         logger.info("start file transfer with file: %s" % file_props)
         contact = gajim.contacts.get_contact_with_highest_priority(self.name,
-                                                                   gajim.get_jid_without_resource(jid))
+            gajim.get_jid_without_resource(jid))
         if contact is None:
             return
         use_security = contact.supports(xmpp.NS_JINGLE_XTLS)
         jingle = JingleSession(self, weinitiate=True, jid=jid)
         self._sessions[jingle.sid] = jingle
         file_props['sid'] = jingle.sid
-        c = JingleFileTransfer(jingle, file_props=file_props,
-                               use_security=use_security)
-        c.hash_algo = self.__hash_support(contact) 
+        if contact.supports(xmpp.NS_JINGLE_BYTESTREAM):
+            transport = JingleTransportSocks5()
+        elif contact.supports(xmpp.NS_JINGLE_IBB):
+            transport = JingleTransportIBB()
+        c = JingleFileTransfer(jingle, transport=transport,
+            file_props=file_props, use_security=use_security)
+		c.hash_algo = self.__hash_support(contact) 
         jingle.add_content('file' + helpers.get_random_string_16(), c)
         jingle.start_session()
         return c.transport.sid
@@ -172,13 +178,16 @@ class ConnectionJingle(object):
 
     def iter_jingle_sessions(self, jid, sid=None, media=None):
         if sid:
-            return (session for session in self._sessions.values() if session.sid == sid)
-        sessions = (session for session in self._sessions.values() if session.peerjid == jid)
+            return (session for session in self._sessions.values() if \
+                session.sid == sid)
+        sessions = (session for session in self._sessions.values() if \
+            session.peerjid == jid)
         if media:
             if media not in ('audio', 'video', 'file'):
                 return tuple()
             else:
-                return (session for session in sessions if session.get_content(media))
+                return (session for session in sessions if \
+                    session.get_content(media))
         else:
             return sessions
 
diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py
index f2fa6893e7dd2f7b1199036647a6170f1c435231..59ea6d256847afdad82f7a73d97441b4dd22dd17 100644
--- a/src/common/jingle_ft.py
+++ b/src/common/jingle_ft.py
@@ -22,7 +22,8 @@ Handles  Jingle File Transfer (XEP 0234)
 import gajim
 import xmpp
 from jingle_content import contents, JingleContent
-from jingle_transport import JingleTransportICEUDP, JingleTransportSocks5, JingleTransportIBB, TransportType
+from jingle_transport import JingleTransportICEUDP, JingleTransportSocks5
+from jingle_transport import JingleTransportIBB, TransportType
 from common import helpers
 from common.socks5 import Socks5ReceiverClient, Socks5SenderClient
 from common.connection_handlers_events import FileRequestReceivedEvent
@@ -150,9 +151,9 @@ class JingleFileTransfer(JingleContent):
 
         self.file_props['streamhosts'] = self.transport.remote_candidates
         for host in self.file_props['streamhosts']:
-                host['initiator'] = self.session.initiator
-                host['target'] = self.session.responder
-                host['sid'] = self.file_props['sid']
+            host['initiator'] = self.session.initiator
+            host['target'] = self.session.responder
+            host['sid'] = self.file_props['sid']
 
         response = stanza.buildReply('result')
         response.delChild(response.getQuery())
@@ -161,15 +162,15 @@ class JingleFileTransfer(JingleContent):
         if not gajim.socks5queue.get_file_props(
            self.session.connection.name, self.file_props['sid']):
             gajim.socks5queue.add_file_props(self.session.connection.name,
-                                            self.file_props)
+                self.file_props)
         fingerprint = None
         if self.use_security:
             fingerprint = 'client'
         if self.transport.type == TransportType.SOCKS5:
             gajim.socks5queue.connect_to_hosts(self.session.connection.name,
-                       self.file_props['sid'], self.send_candidate_used,
-                         self._on_connect_error, fingerprint=fingerprint,
-                         receiving=False)
+                self.file_props['sid'], self.send_candidate_used,
+                self._on_connect_error, fingerprint=fingerprint,
+                receiving=False)
         elif self.transport.type == TransportType.IBB:
             self.state = STATE_TRANSFERING
             self.__start_IBB_transfer(self.session.connection)
@@ -286,11 +287,11 @@ class JingleFileTransfer(JingleContent):
     def __start_IBB_transfer(self, con):
         con.files_props[self.file_props['sid']] = self.file_props
         fp = open(self.file_props['file-name'], 'r')
-        con.OpenStream( self.transport.sid, self.session.peerjid,
-                            fp,    blocksize=4096)
+        con.OpenStream( self.transport.sid, self.session.peerjid, fp,
+            blocksize=4096)
 
-    def __transport_setup(self, stanza=None, content=None, error=None
-                     , action=None):
+    def __transport_setup(self, stanza=None, content=None, error=None,
+    action=None):
         # Sets up a few transport specific things for the file transfer
         if self.transport.type == TransportType.SOCKS5:
             self._listen_host()
@@ -377,7 +378,7 @@ class JingleFileTransfer(JingleContent):
         receiver = self.file_props['receiver']
         sender = self.file_props['sender']
         sha_str = helpers.get_auth_sha(self.file_props['sid'], sender,
-                receiver)
+            receiver)
         self.file_props['sha_str'] = sha_str
 
         port = gajim.config.get('file_transfers_port')
@@ -388,15 +389,15 @@ class JingleFileTransfer(JingleContent):
 
         if self.weinitiate:
             listener = gajim.socks5queue.start_listener(port, sha_str,
-                    self._store_socks5_sid, self.file_props,
-                    fingerprint=fingerprint, type='sender')
+                self._store_socks5_sid, self.file_props,
+                fingerprint=fingerprint, type='sender')
         else:
             listener = gajim.socks5queue.start_listener(port, sha_str,
-                    self._store_socks5_sid, self.file_props,
-                    fingerprint=fingerprint, type='receiver')
+                self._store_socks5_sid, self.file_props,
+                fingerprint=fingerprint, type='receiver')
 
         if not listener:
-        # send error message, notify the user
+            # send error message, notify the user
             return
     def isOurCandUsed(self):
         '''
@@ -467,21 +468,18 @@ class JingleFileTransfer(JingleContent):
                 gajim.socks5queue.idx += 1
                 idx = gajim.socks5queue.idx
                 sockobj = Socks5SenderClient(gajim.idlequeue, idx,
-                                       gajim.socks5queue, 
-                                       _sock=None,
-                                       host=str(streamhost_used['host']), 
-                                       port=int(streamhost_used['port']),
-                                       fingerprint=None, 
-                                       connected=False, 
-                                       file_props=self.file_props)
+                    gajim.socks5queue, _sock=None,
+                    host=str(streamhost_used['host']),
+                    port=int(streamhost_used['port']), fingerprint=None,
+                    connected=False, file_props=self.file_props)
             else:
                 sockobj = Socks5ReceiverClient(gajim.idlequeue, streamhost_used,
                     sid=self.file_props['sid'],
                     file_props=self.file_props, fingerprint=None)
             sockobj.proxy = True
-            sockobj.streamhost = streamhost_used             
-            gajim.socks5queue.add_sockobj(self.session.connection.name, 
-                                           sockobj, 'sender')
+            sockobj.streamhost = streamhost_used
+            gajim.socks5queue.add_sockobj(self.session.connection.name,
+                sockobj, 'sender')
             streamhost_used['idx'] = sockobj.queue_idx
             # If we offered the nominated candidate used, we activate
             # the proxy
diff --git a/src/common/protocol/bytestream.py b/src/common/protocol/bytestream.py
index 9c83ddea11811956304dd1845fa563ffb907df0e..dd7486ae26b55c34c37a77bb6494eafa273d047f 100644
--- a/src/common/protocol/bytestream.py
+++ b/src/common/protocol/bytestream.py
@@ -957,13 +957,17 @@ class ConnectionIBBytestream(ConnectionBytestream):
         log.debug('StreamCloseHandler called sid->%s' % sid)
         # look in sending files
         if sid in self.files_props.keys():
-            conn.send(stanza.buildReply('result'))
+            reply = stanza.buildReply('result')
+            reply.delChild('close')
+            conn.send(reply)
             gajim.socks5queue.complete_transfer_cb(self.name, self.files_props[sid])
             del self.files_props[sid]
         # look in receiving files
         elif gajim.socks5queue.get_file_props(self.name, sid):
             file_props = gajim.socks5queue.get_file_props(self.name, sid)
-            conn.send(stanza.buildReply('result'))
+            reply = stanza.buildReply('result')
+            reply.delChild('close')
+            conn.send(reply)
             file_props['fp'].close()
             gajim.socks5queue.complete_transfer_cb(self.name, file_props)
             gajim.socks5queue.remove_file_props(self.name, sid)
@@ -1003,6 +1007,7 @@ class ConnectionIBBytestream(ConnectionBytestream):
             if stanza.getTag('data'):
                 if self.IBBMessageHandler(conn, stanza):
                     reply = stanza.buildReply('result')
+                    reply.delChild('data')
                     conn.send(reply)
                     raise xmpp.NodeProcessed
             elif syn_id == self.last_sent_ibb_id: