Skip to content

Commit

Permalink
close transport properly after SessionCloseError
Browse files Browse the repository at this point in the history
  • Loading branch information
christian-sahlmann committed Jul 4, 2022
1 parent 2e318b5 commit bd54e8b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
2 changes: 1 addition & 1 deletion mb_netmgmt/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# along with mb-netmgmt. If not, see <https://www.gnu.org/licenses/

"""Network Management Protocols for Mountebank"""
__version__ = "0.0.38"
__version__ = "0.0.39"

import os
import subprocess
Expand Down
6 changes: 4 additions & 2 deletions mb_netmgmt/netconf.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
from ncclient.transport.ssh import MSG_DELIM, PORT_NETCONF_DEFAULT, SSHSession

from mb_netmgmt.__main__ import Protocol
from mb_netmgmt.ssh import accept
from mb_netmgmt.ssh import start_server

stopped = False

Expand All @@ -50,10 +50,12 @@ def setup(self):

def handle(self):
self.callback_url = self.server.callback_url
self.channel = accept(self.request)
transport = start_server(self.request)
self.channel = transport.accept()
self.open_upstream()
self.session._connected = True
self.handle_prompt()
self.session._transport = transport
self.session._channel = self.channel
self.session.run()

Expand Down
7 changes: 4 additions & 3 deletions mb_netmgmt/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ class Handler(BaseRequestHandler, Protocol):

def handle(self):
self.callback_url = self.server.callback_url
self.channel = accept(self.request)
transport = start_server(self.request)
self.channel = transport.accept()
self.open_upstream()
self.handle_prompt()
while not stopped:
Expand Down Expand Up @@ -103,10 +104,10 @@ def read_message(self, channel):
return message


def accept(request):
def start_server(request):
t = paramiko.Transport(request)
t.add_server_key(paramiko.DSSKey.generate())
t.add_server_key(paramiko.ECDSAKey.generate())
t.add_server_key(paramiko.RSAKey.generate(4096))
t.start_server(server=ParamikoServer())
return t.accept()
return t

0 comments on commit bd54e8b

Please sign in to comment.