diff --git a/lib/msf/ui/gtk2/frame.rb b/lib/msf/ui/gtk2/frame.rb index 6203e5b848..f170eeaf37 100644 --- a/lib/msf/ui/gtk2/frame.rb +++ b/lib/msf/ui/gtk2/frame.rb @@ -468,7 +468,7 @@ class MySessionTree close_session_item_shell.signal_connect('activate') do |item| if session_iter = @selection.selected - framework.events.on_session_close(session_iter) + remove_session(session_iter) end end @@ -483,9 +483,14 @@ class MySessionTree # # Remove the session when receive the on_session_close from framework_event_manager # - def remove_session(session_iter) - puts session_iter[O_SESSION] - @model.remove(session_iter) + def remove_session_iter(iter) + session.interacting = false if session.interactive? + framework.events.on_session_close(iter[O_SESSION]) + remove_session(iter) + end + + def remove_session(iter) + @model.remove(iter) end end # class MySessionTree diff --git a/lib/msf/ui/gtk2/framework_event_manager.rb b/lib/msf/ui/gtk2/framework_event_manager.rb index 1496e2b0f9..da255ec227 100644 --- a/lib/msf/ui/gtk2/framework_event_manager.rb +++ b/lib/msf/ui/gtk2/framework_event_manager.rb @@ -40,14 +40,15 @@ module FrameworkEventManager # # Called when a session is closed and removed from the framework. # - def on_session_close(session_iter) - $gtk2driver.session_tree.remove_session(session_iter) - # if (session.interacting == true) - # output.print_line - # end + def on_session_close(session) + + if (session.interacting == true) + output.print_line + end # If logging had been enabled for this session, stop it now. - # Msf::Logging::stop_session_log(session) + Msf::Logging::stop_session_log(session) + end end