Commit Graph

949 Commits

Author SHA1 Message Date
Jeff Forcier ea27a8bd87 Merge branch '1.11' 2013-09-20 13:58:32 -07:00
Jeff Forcier 081b04116b Clone changelog entry for 1.11 2013-09-20 13:58:29 -07:00
Jeff Forcier 0355672721 Merge branch '1.10' into 1.11
Conflicts:
	NEWS
2013-09-20 13:45:18 -07:00
Jeff Forcier f7d74d03d9 Changelog entry re #162 2013-09-20 13:44:28 -07:00
Jeff Forcier 565eff8274 Apply slightly modified version of patch from #162 2013-09-20 13:19:01 -07:00
Jeff Forcier db083b6478 Merge branch '1.11' 2013-09-20 12:25:18 -07:00
Jeff Forcier e6abab18ee Tag nag 2013-08-01 11:51:08 -07:00
Jeff Forcier e06b0f597e Tag nag 2013-08-01 11:50:46 -07:00
Jeff Forcier 2a08a48dd2 Version bump/dumb-fix 2013-07-26 15:07:33 -07:00
Jeff Forcier d2c71ed999 Merge branch '1.10'
Conflicts:
	NEWS
	setup.py
2013-07-26 15:06:58 -07:00
Jeff Forcier 965d00dee9 Version bump 2013-07-26 15:05:35 -07:00
Jeff Forcier c8b75a489c Update changelog for release 2013-07-26 15:04:16 -07:00
Jeff Forcier caf94786ca Update doc upload task w/ static hostname 2013-07-07 15:40:38 -07:00
Jeff Forcier ba3ce80c14 Add ML link to docs 'index'
Fixes #48
2013-06-28 13:07:19 -07:00
Jeff Forcier 993ecb31d2 Port Makefile contents into fabfile 2013-06-28 13:07:06 -07:00
Jeff Forcier 4ee577abc5 Move reqs.txt to dev-reqs.txt, solidify tox req 2013-06-26 09:02:48 -07:00
Emre Yılmaz 3399d519e0 updated config to be compatible with multiple localforward and remoteforward options. 2013-05-21 00:40:28 +03:00
Jeff Forcier d77a4d6421 Merge branch '1.10' 2013-05-05 13:59:41 -07:00
Jeff Forcier 3c2f01c91f Flip bad known_hosts line to INFO from WARN re #153 2013-05-05 13:59:34 -07:00
Ethan Glasser-Camp a733c428cd Add NEWS entry 2013-04-30 00:25:53 -04:00
Jeff Forcier 777d1576ca Bump dev version 2013-04-28 19:01:40 -07:00
Jeff Forcier d0c7a5d884 Merge branch 'master' of github.com:paramiko/paramiko 2013-04-28 18:50:37 -07:00
Jeff Forcier b33d9c7bca Merge branch '1.10' 2013-04-28 18:41:15 -07:00
Jeff Forcier b2b8d5d0a6 Add explicit link to updated API docs. Fixes #160 2013-04-28 18:41:10 -07:00
Jeff Forcier 0b9393b063 Merge pull request #155 from Baconator507/patch-1
Update demo.py
2013-04-28 18:38:27 -07:00
Jeff Forcier f00f87c9be Merge branch '1.10' 2013-04-28 18:10:15 -07:00
Ethan Glasser-Camp 8c7f120c2c Warn on parse failure when reading known_hosts 2013-04-28 18:10:02 -07:00
Jeff Forcier 675d79d743 Merge pull request #153 from glasserc/log_bad_hostkeys
Warn on parse failure when reading known_hosts
2013-04-28 18:08:55 -07:00
Ethan Glasser-Camp aee2355d24 Warn on parse failure when reading known_hosts 2013-04-28 14:21:05 -04:00
Jeff Forcier a1fa1ba9cc Merge branch '1.10'
Conflicts:
	NEWS
2013-04-27 22:15:07 -07:00
Jeff Forcier 3966ac103c Changelog re #146 (also start 10.10.2 section) 2013-04-27 22:12:24 -07:00
Abhinav Upadhyay e6c23f23f4 Fix indentation at few places. 2013-04-27 22:08:50 -07:00
Jeff Forcier f861c2ff48 Back out broken but non-required hostname hash change 2013-04-27 20:55:50 -07:00
Jeff Forcier 6747d9944a Changelog re #87 2013-04-27 20:50:29 -07:00
Mike Gabriel 1b928df15e do not write ,,garbage'' to known_hosts file(s) 2013-04-27 20:36:45 -07:00
Mike Gabriel 81f87f1d5e Load host entries from the known_hosts file(s) before writing the file from RAM to disk. Avoids loss of host entries in case other SSH clients have written to the known_hosts file(s) meanwhile. 2013-04-27 20:36:45 -07:00
Mike Gabriel 080bece258 Assure that host entries in known_hosts files do not duplicate endlessly if keys from known_hosts are loaded via HostKeys.load() more than once (e.g. for refreshing the list of known hosts during runtime). 2013-04-27 20:36:45 -07:00
Mike Gabriel 4f481a57a2 Store hostname hashes in memory rathen than the non-hashed host entries. Also assures that the host entries in known_hosts get saved in hashed format as it is currently standard in OpenSSH. 2013-04-27 20:36:45 -07:00
Steven Noonan 5c124cb136 un-break Python 2.5 compatibility by using isAlive() instead of is_alive()
Python's documentation has a bug[1], in that it doesn't correctly annotate
is_alive as being a function introduced in Python 2.6.

[1] http://bugs.python.org/issue15126

Signed-off-by: Steven Noonan <snoonan@amazon.com>
2013-04-11 16:27:49 -07:00
Frank Arnold 068bf63cf0 transport: Wait for thread termination before closing the socket
Make sure the Thread.run() method has terminated before closing the
socket. Currently, the socket is closed through Packetizer.close(),
which happens too early. Move the socket.close() into Transport.close()
and after the Thread.join() call.

While at it, modify the stop_thread() method and use it in
Transport.close() to avoid code duplication. Use join() with a timeout
to make it possible to terminate the main thread with KeyboardInterrupt.
Also, remove the now obsolete socket.close() from Transport.atfork().

This fixes a potential infinite loop if paramiko.SSHClient is connected
through a paramiko.Channel instead of a regular socket (tunneling).

Details:

Using a debug patch to dump the current stack of the thread every
couple of seconds while trying to close it, I've seen the following
over and over again:

Thread could not be stopped, still running.
Current traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 524, in __bootstrap
    self.__bootstrap_inner()
  File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
    self.run()
  File ".../paramiko/transport.py", line 1564, in run
    self._channel_handler_table[ptype](chan, m)
  File ".../paramiko/channel.py", line 1102, in _handle_close
    self.transport._send_user_message(m)
  File ".../paramiko/transport.py", line 1418, in _send_user_message
    self._send_message(data)
  File ".../paramiko/transport.py", line 1398, in _send_message
    self.packetizer.send_message(data)
  File ".../paramiko/packet.py", line 319, in send_message
    self.write_all(out)
  File ".../paramiko/packet.py", line 248, in write_all
    n = self.__socket.send(out)
  File ".../paramiko/channel.py", line 732, in send
    self.lock.release()

The thread was running Packetizer.write_all() in an endless loop:

while len(out) > 0:
    ...
    n = Channel.send(out) # n == 0 because channel got closed
    ...
    out = out[n:]         # essentially out = out

Signed-off-by: Frank Arnold <farnold@amazon.com>
2013-04-11 16:14:21 -07:00
Ivan Barria b96e7e4132 Update demo.py
why import threading?
2013-04-09 02:14:51 -03:00
Jeff Forcier b329512636 Merge branch '1.10'
Conflicts:
	NEWS
2013-04-05 13:02:11 -07:00
Jeff Forcier 02d071be07 Bump version to 1.10.1 2013-04-05 13:00:19 -07:00
Jeff Forcier 1d494eb0db Changelog re #154 2013-04-05 12:58:44 -07:00
Kevin Tegtmeier 2e2a915807 Fix bug that leaves fds in select after EOF received 2013-04-05 11:54:48 -07:00
Jeff Forcier 73a0d03bdc Merge branch '1.10'
Conflicts:
	NEWS
2013-04-05 11:51:47 -07:00
Jeff Forcier 17ba0d5b61 Dumb format tweak to NEWS 2013-04-05 11:51:19 -07:00
Jeff Forcier 2a774d1e8a Merge branch '1.10' into 143-int 2013-04-05 11:41:33 -07:00
Jeff Forcier 9695747875 Merge branch '1.10' 2013-04-05 10:10:06 -07:00
Jeff Forcier 5c9aa3dcdc Merge branch '1.9' into 1.10 2013-04-05 10:10:02 -07:00