aboutsummaryrefslogtreecommitdiffstats
path: root/src/encoding.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2012-12-12 13:56:07 +0000
committerVincent Richard <[email protected]>2012-12-12 13:56:07 +0000
commit7a9db510f5c126d915cab841ab4e00afbd9895a4 (patch)
treef68b787fc164ff7f726aca75a2689c7da8abb86f /src/encoding.cpp
parentIgnore binary file for unit tests. (diff)
downloadvmime-7a9db510f5c126d915cab841ab4e00afbd9895a4.tar.gz
vmime-7a9db510f5c126d915cab841ab4e00afbd9895a4.zip
Do not re-encode data if it is already encoded (thanks to Mehmet Bozkurt).
Diffstat (limited to 'src/encoding.cpp')
-rw-r--r--src/encoding.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/encoding.cpp b/src/encoding.cpp
index 343a8223..4570237d 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -187,6 +187,10 @@ const encoding encoding::decideImpl
const encoding encoding::decide
(ref <const contentHandler> data, const EncodingUsage usage)
{
+ // Do not re-encode data if it is already encoded
+ if (data->isEncoded() && data->getEncoding() == encoding(encodingTypes::BASE64))
+ return data->getEncoding();
+
encoding enc;
if (usage == USAGE_TEXT && data->isBuffered() &&
@@ -215,6 +219,10 @@ const encoding encoding::decide
const encoding encoding::decide(ref <const contentHandler> data,
const charset& chset, const EncodingUsage usage)
{
+ // Do not re-encode data if it is already encoded
+ if (data->isEncoded() && data->getEncoding() == encoding(encodingTypes::BASE64))
+ return data->getEncoding();
+
if (usage == USAGE_TEXT)
{
encoding recEncoding;