Ori.livneh has submitted this change and it was merged.
Change subject: ssh-agent-proxy: break out of select loop once client is done
......................................................................
ssh-agent-proxy: break out of select loop once client is done
By moving the `if code is None: return` code into a subroutine that is called
from the select loop, we no longer break out of the loop when the client
disconnects, leading to file descriptor exhaustion.
Bug: T110794
Change-Id: I499c82490f77887d33c038e49c9b174bfcd0e57c
---
M modules/keyholder/files/ssh-agent-proxy
1 file changed, 7 insertions(+), 13 deletions(-)
Approvals:
Ori.livneh: Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/keyholder/files/ssh-agent-proxy
b/modules/keyholder/files/ssh-agent-proxy
index 757a012..134a8eb 100644
--- a/modules/keyholder/files/ssh-agent-proxy
+++ b/modules/keyholder/files/ssh-agent-proxy
@@ -149,18 +149,8 @@
header = s_message_header.pack(len(message) + 1, code)
sock.sendall(header + message)
- def handle_backend(self):
- """Read data from the backend SSH agent and send to client."""
- code, message = self.recv_message(self.backend)
- self.send_message(self.request, code, message)
-
- def handle_client_request(self):
+ def handle_client_request(self, code, message):
"""Read data from client and send to backend SSH agent."""
- code, message = self.recv_message(self.request)
-
- if not code:
- return
-
if code in (SSH2_AGENTC_REQUEST_IDENTITIES,
SSH_AGENTC_REQUEST_RSA_IDENTITIES):
if message:
@@ -182,9 +172,13 @@
while 1:
rlist, *_ = select.select((self.backend, self.request), (), (), 1)
if self.backend in rlist:
- self.handle_backend()
+ code, message = self.recv_message(self.backend)
+ self.send_message(self.request, code, message)
if self.request in rlist:
- self.handle_client_request()
+ code, message = self.recv_message(self.request)
+ if not code:
+ return
+ self.handle_client_request(code, message)
def parse_sign_request(self, message):
"""Parse the payload of an SSH2_AGENTC_SIGN_REQUEST into its
--
To view, visit https://gerrit.wikimedia.org/r/234955
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I499c82490f77887d33c038e49c9b174bfcd0e57c
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits