From d4d0fa945d50606360aa7c5f026a0f190b026c68 Mon Sep 17 00:00:00 2001 From: nom3ad <19239479+nom3ad@users.noreply.github.com> Date: Tue, 2 Jan 2024 01:31:24 +0530 Subject: [PATCH] fix: bad file descriptor error in windows, fix pytest errors --- hack/exec-tool | 4 ++-- hack/run-checks | 9 +++++++++ sshuttle/firewall.py | 1 - sshuttle/ssnet.py | 3 ++- tests/client/test_firewall.py | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) create mode 100755 hack/run-checks diff --git a/hack/exec-tool b/hack/exec-tool index 47b84ca..28a0882 100755 --- a/hack/exec-tool +++ b/hack/exec-tool @@ -24,7 +24,7 @@ ping) ;; iperf3) port=5001 - with_set_x exec iperf3 --client "$ip" --port=$port --connect-timeout=$connect_timeout_sec "$@" + with_set_x exec iperf3 --client "$ip" --port=$port --connect-timeout=$((connect_timeout_sec * 1000)) "$@" ;; curl) port=8080 @@ -32,6 +32,6 @@ curl) ;; ab) port=8080 - with_set_x exec ab -n 100 -c 20 -s $connect_timeout_sec "$@" "http://$ip:$port/" + with_set_x exec ab -n 100 -c 20 -s $connect_timeout_sec "$@" "http://$ip:$port/" ;; esac diff --git a/hack/run-checks b/hack/run-checks new file mode 100755 index 0000000..72bead2 --- /dev/null +++ b/hack/run-checks @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -e +cd "$(dirname "$0")/.." + +export PYTHONPATH=. + +set -x +python -m pytest . +python -m flake8 . \ No newline at end of file diff --git a/sshuttle/firewall.py b/sshuttle/firewall.py index 3e3bb64..9532ab0 100644 --- a/sshuttle/firewall.py +++ b/sshuttle/firewall.py @@ -224,7 +224,6 @@ def main(method_name, syslog): stdout.write(('READY %s\n' % method.name).encode('ASCII')) stdout.flush() - def _read_next_string_line(): try: line = stdin.readline(128) diff --git a/sshuttle/ssnet.py b/sshuttle/ssnet.py index 798e42a..6110b4c 100644 --- a/sshuttle/ssnet.py +++ b/sshuttle/ssnet.py @@ -432,7 +432,8 @@ class Mux(Handler): def flush(self): set_non_blocking_io(self.wfile.fileno()) if self.outbuf and self.outbuf[0]: - wrote = _nb_clean(os.write, self.wfile.fileno(), self.outbuf[0]) + wrote = _nb_clean(self.wfile.write, self.outbuf[0]) + self.wfile.flush() debug2('mux wrote: %r/%d' % (wrote, len(self.outbuf[0]))) if wrote: self.outbuf[0] = self.outbuf[0][wrote:] diff --git a/tests/client/test_firewall.py b/tests/client/test_firewall.py index 02a73f7..f9d4fdb 100644 --- a/tests/client/test_firewall.py +++ b/tests/client/test_firewall.py @@ -21,7 +21,7 @@ NSLIST PORTS 1024,1025,1026,1027 GO 1 - - 0x01 12345 HOST 1.2.3.3,existing -""".format(inet=AF_INET, inet6=AF_INET6)) +""".format(inet=AF_INET, inet6=AF_INET6).encode('ASCII')) stdout = Mock() return stdin, stdout