diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2012-04-04 09:47:57 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2012-04-04 09:47:57 +1200 |
commit | 79a0334a0245de915bfffc999906d45e0e42d37e (patch) | |
tree | 72ddc1948d2802b4b82c193e156d2a861ebecc20 /libmproxy/flow.py | |
parent | ab0e10e60f9d481ac0aa782c69bd02de9b7fbf0d (diff) | |
download | mitmproxy-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.py | 13 |
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): """ |