~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/sftp.py

merge more sftp fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
101
101
                }
102
102
 
103
103
 
104
 
# don't use prefetch unless paramiko version >= 1.5.2 (there were bugs earlier)
105
 
_default_do_prefetch = False
106
 
if getattr(paramiko, '__version_info__', (0, 0, 0)) >= (1, 5, 5):
107
 
    _default_do_prefetch = True
 
104
_paramiko_version = getattr(paramiko, '__version_info__', (0, 0, 0))
 
105
# don't use prefetch unless paramiko version >= 1.5.5 (there were bugs earlier)
 
106
_default_do_prefetch = (_paramiko_version >= (1, 5, 5))
 
107
 
 
108
# Paramiko 1.5 tries to open a socket.AF_UNIX in order to connect
 
109
# to ssh-agent. That attribute doesn't exist on win32 (it does in cygwin)
 
110
# so we get an AttributeError exception. So we will not try to
 
111
# connect to an agent if we are on win32 and using Paramiko older than 1.6
 
112
_use_ssh_agent = (sys.platform != 'win32' or _paramiko_version >= (1, 6, 0)) 
108
113
 
109
114
 
110
115
_ssh_vendor = None
774
779
        # Also, it would mess up the self.relpath() functionality
775
780
        username = self._username or getpass.getuser()
776
781
 
777
 
        # Paramiko tries to open a socket.AF_UNIX in order to connect
778
 
        # to ssh-agent. That attribute doesn't exist on win32 (it does in cygwin)
779
 
        # so we get an AttributeError exception. For now, just don't try to
780
 
        # connect to an agent if we are on win32
781
 
        if sys.platform != 'win32':
 
782
        if _use_ssh_agent:
782
783
            agent = paramiko.Agent()
783
784
            for key in agent.get_keys():
784
785
                mutter('Trying SSH agent key %s' % paramiko.util.hexify(key.get_fingerprint()))
979
980
        global _ssh_vendor
980
981
        self._original_vendor = _ssh_vendor
981
982
        _ssh_vendor = self._vendor
982
 
        self._homedir = getcwd()
 
983
        if sys.platform == 'win32':
 
984
            # Win32 needs to use the UNICODE api
 
985
            self._homedir = getcwd()
 
986
        else:
 
987
            # But Linux SFTP servers should just deal in bytestreams
 
988
            self._homedir = os.getcwd()
983
989
        if self._server_homedir is None:
984
990
            self._server_homedir = self._homedir
985
991
        self._root = '/'