diff options
-rw-r--r-- | changelog | 16 | ||||
-rw-r--r-- | ssh-agent-filter.C | 10 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 23 insertions, 5 deletions
@@ -1,3 +1,17 @@ +commit ddea0ce92bad7e218be9ac46f76ff2c34fd43a15 +Author: Timo Weingärtner <timo@tiwe.de> +Date: 2018-05-10 17:50:04 +0200 + + Partially revert "(re)unify client iostreams" + + This partially reverts commit a42c87e6a761a56ebc63cd7728fa2126b2e8805f. + +commit d731f74d7ccf56874953c395bcfcc93efdd70f00 (tag: 0.5) +Author: Timo Weingärtner <timo@tiwe.de> +Date: 2018-01-08 21:10:08 +0100 + + release 0.5 + commit 3b9460a74b51119e15e0d57dafb2e0c66326890a Author: Timo Weingärtner <timo@tiwe.de> Date: 2018-01-08 21:08:09 +0100 @@ -30,7 +44,7 @@ Date: 2016-10-11 16:42:02 +0200 fixup! afssh: use realpath instead of readlink -f, with fallback -commit 2f994963899ca8e039dd0aa38884693a9928e116 (tiwe/master) +commit 2f994963899ca8e039dd0aa38884693a9928e116 Author: Timo Weingärtner <timo@tiwe.de> Date: 2016-10-11 14:25:39 +0200 diff --git a/ssh-agent-filter.C b/ssh-agent-filter.C index 74b15ab..307be1f 100644 --- a/ssh-agent-filter.C +++ b/ssh-agent-filter.C @@ -567,11 +567,15 @@ void handle_client (int const sock) try { if (fcntl(sock, F_SETFL, fcntl(sock, F_GETFL) & ~O_NONBLOCK)) throw system_error(errno, system_category(), "fcntl"); - io::stream<io::file_descriptor> client{sock, io::close_handle}; - arm(client); + // we could use only one streambuf and iostream but when + // switching from read to write an lseek call is made that + // fails with ESPIPE and causes an exception + io::stream<io::file_descriptor_source> client_in{sock, io::close_handle}; + io::stream<io::file_descriptor_sink> client_out{sock, io::never_close_handle}; + arm(client_out); for (;;) - client << handle_request(rfc4251::string{client}) << flush; + client_out << handle_request(rfc4251::string{client_in}) << flush; } catch (...) { } @@ -1 +1 @@ -#define SSH_AGENT_FILTER_VERSION "ssh-agent-filter 0.5" +#define SSH_AGENT_FILTER_VERSION "ssh-agent-filter 0.5.1" |