aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/flow.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-04-04 09:47:57 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-04-04 09:47:57 +1200
commit79a0334a0245de915bfffc999906d45e0e42d37e (patch)
tree72ddc1948d2802b4b82c193e156d2a861ebecc20 /libmproxy/flow.py
parentab0e10e60f9d481ac0aa782c69bd02de9b7fbf0d (diff)
downloadmitmproxy-79a0334a0245de915bfffc999906d45e0e42d37e.tar.gz
mitmproxy-79a0334a0245de915bfffc999906d45e0e42d37e.tar.bz2
mitmproxy-79a0334a0245de915bfffc999906d45e0e42d37e.zip
Improve revert model
- Flows are backed up whenever an interactive, non-script change is made. - That backup is canonical and never changed - "V" will always revert to it. This makes more sense than what we had previously....
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r--libmproxy/flow.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 6444fb7e..571da836 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -760,6 +760,7 @@ class ClientConnect(controller.Msg):
return self._get_state() == other._get_state()
def _load_state(self, state):
+ self.close = True
self.requestcount = state["requestcount"]
def _get_state(self):
@@ -1047,21 +1048,16 @@ class Flow:
f._load_state(state)
return f
- def _get_state(self, nobackup=False):
+ def _get_state(self):
d = dict(
request = self.request._get_state() if self.request else None,
response = self.response._get_state() if self.response else None,
error = self.error._get_state() if self.error else None,
version = version.IVERSION
)
- if nobackup:
- d["backup"] = None
- else:
- d["backup"] = self._backup
return d
def _load_state(self, state):
- self._backup = state["backup"]
if self.request:
self.request._load_state(state["request"])
else:
@@ -1094,12 +1090,13 @@ class Flow:
else:
return False
- def backup(self):
+ def backup(self, force=False):
"""
Save a backup of this Flow, which can be reverted to using a
call to .revert().
"""
- self._backup = self._get_state(nobackup=True)
+ if not self._backup:
+ self._backup = self._get_state()
def revert(self):
"""