aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2007-07-30 13:13:59 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2007-07-30 13:13:59 +0000
commitaf33f13371ff9ce2e11a94003e4d7427be4a6866 (patch)
tree2abf5efb29073d5da8a2371a0dc0d93788dee7a4 /src
parent* src/tls/tls_drv.c: Sends the entire certificate chain (EJAB-209). (diff)
* src/xml.erl: Only wrap xmldata nodes in xml cdata "tag" if bigger than 50 bytes. Shorter xmlcdata nodes will be escaped.
SVN Revision: 842
Diffstat (limited to 'src')
-rw-r--r--src/xml.erl14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/xml.erl b/src/xml.erl
index 60c5d7934..2108d6920 100644
--- a/src/xml.erl
+++ b/src/xml.erl
@@ -20,6 +20,9 @@
get_path_s/2,
replace_tag_attr/3]).
+%% XML CDATA bigger than this will be enclosed in CDATA XML "tag"
+-define(CDATA_BINARY_THRESHOLD, 50).
+
element_to_string(El) ->
case El of
{xmlelement, Name, Attrs, Els} ->
@@ -31,13 +34,16 @@ element_to_string(El) ->
true ->
[$<, Name, attrs_to_list(Attrs), $/, $>]
end;
- {xmlcdata, CData} when list(CData) ->
- crypt(CData);
%% We do not crypt CDATA binary, but we enclose it in XML CDATA
- {xmlcdata, CData} when binary(CData) ->
+ %% if they are long enough to be worth it.
+ {xmlcdata, CData} when binary(CData), size(CData) > ?CDATA_BINARY_THRESHOLD ->
CDATA1 = <<"<![CDATA[">>,
CDATA2 = <<"]]>">>,
- concat_binary([CDATA1, CData, CDATA2])
+ concat_binary([CDATA1, CData, CDATA2]);
+ %% We crypt list and short binaries (implies a conversion to
+ %% list).
+ {xmlcdata, CData} ->
+ crypt(CData)
end.
attrs_to_list(Attrs) ->