aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlloyd <[email protected]>2012-05-18 13:14:04 +0000
committerlloyd <[email protected]>2012-05-18 13:14:04 +0000
commit9cdff001953ce80cd15ff556a5ae08aaa98d2df5 (patch)
tree00b653a94292147415e10b6b9771e8361a48cc3f
parentc26068b5c08d6121ad83ea41ad220e3fb095bced (diff)
Pipe::reset's requirement that a message be completed meant that
exceptions thrown in end_msg (for instance in CBC decryption when the padding is bad) more or less screwed up the pipe completely. Allowing reset here at least allows an escape hatch.
-rw-r--r--doc/log.txt5
-rw-r--r--src/filters/pipe.cpp2
2 files changed, 5 insertions, 2 deletions
diff --git a/doc/log.txt b/doc/log.txt
index cc13a63d3..180a50340 100644
--- a/doc/log.txt
+++ b/doc/log.txt
@@ -10,6 +10,11 @@ Series 1.10
Version 1.10.2, Not Yet Released
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* Pipe::reset no longer requires that message processing be completed,
+ a requirement that caused problems when a Filter's end_msg call
+ threw an exception, after which point the Pipe object was no longer
+ usable.
+
* The SSL/TLS code is disabled by default in this release. A new
version is being developed and the current iteration should not be
used unless needed for existing code.
diff --git a/src/filters/pipe.cpp b/src/filters/pipe.cpp
index 3c3b5e6a4..85a6cddab 100644
--- a/src/filters/pipe.cpp
+++ b/src/filters/pipe.cpp
@@ -75,8 +75,6 @@ void Pipe::init()
*/
void Pipe::reset()
{
- if(inside_msg)
- throw Invalid_State("Pipe cannot be reset while it is processing");
destruct(pipe);
pipe = 0;
inside_msg = false;