Skip to content

Commit b4413bf

Browse files
authored
Added Channel.signal function for sending signals to an open channel.
* Added CI tests for sending signals to channel. * Resolves #221 (#227)
1 parent 148dbe0 commit b4413bf

File tree

4 files changed

+466
-164
lines changed

4 files changed

+466
-164
lines changed

ci/integration_tests/test_channel.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import socket
33
from subprocess import check_output
44
from unittest import skipUnless
5+
from signal import Signals
56

67

78
from ssh2.session import Session
@@ -214,3 +215,16 @@ def test_execute_with_session_compression(self):
214215
size, data = chan.read()
215216
lines = [line.decode('utf-8') for line in data.splitlines()]
216217
self.assertTrue(lines, [self.resp])
218+
219+
def test_channel_signal(self):
220+
self.assertEqual(self._auth(), 0)
221+
my_sig = Signals.SIGTERM
222+
chan = self.session.open_session()
223+
chan.execute('sleep 10 && exit 2')
224+
self.assertTrue(chan.signal(my_sig.name[3:]) == 0)
225+
chan.send_eof()
226+
chan.wait_eof()
227+
chan.close()
228+
chan.wait_closed()
229+
exit_code = chan.get_exit_status()
230+
self.assertNotEqual(exit_code, 2)

ssh2/c_ssh2.pxd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ cdef extern from "libssh2.h" nogil:
337337
int libssh2_channel_close(LIBSSH2_CHANNEL *channel)
338338
int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel)
339339
int libssh2_channel_free(LIBSSH2_CHANNEL *channel)
340+
int libssh2_channel_signal_ex(LIBSSH2_CHANNEL *channel, const char *signame, size_t signame_len)
340341

341342
# libssh2_scp_recv is DEPRECATED, do not use!
342343
LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session,

0 commit comments

Comments
 (0)