diff options
-rw-r--r-- | libmproxy/dump.py | 5 | ||||
-rwxr-xr-x | mitmdump | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/libmproxy/dump.py b/libmproxy/dump.py index 253a22d7..a797efbf 100644 --- a/libmproxy/dump.py +++ b/libmproxy/dump.py @@ -214,6 +214,11 @@ class DumpMaster(flow.FlowMaster): self._process_flow(f) return f + def shutdown(self): + if self.o.wfile: + self.wfile.fo.close() + return flow.FlowMaster.shutdown(self) + # begin nocover def run(self): if self.o.rfile and not self.o.keepserving: @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import sys +import sys, signal from libmproxy import proxy, dump, cmdline from libmproxy.version import VERSION from optparse import OptionParser @@ -62,9 +62,15 @@ if __name__ == '__main__': try: m = dump.DumpMaster(server, dumpopts, filt) + def cleankill(*args, **kwargs): + m.shutdown() + signal.signal(signal.SIGTERM, cleankill) m.run() except dump.DumpError, e: print >> sys.stderr, "mitmdump:", e sys.exit(1) except KeyboardInterrupt: pass + + + |