]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Patch by Guzmán Brasó
authorghendricks%novell.com <>
Tue, 6 Feb 2007 03:52:18 +0000 (03:52 +0000)
committerghendricks%novell.com <>
Tue, 6 Feb 2007 03:52:18 +0000 (03:52 +0000)
r=ghendricks, a=LpSolit

importxml.pl

index 2fc5ecc06175d98038093a808606d133f58d7eab..233253d3fd8d9b4da2a616b8e970e7035129b465 100755 (executable)
@@ -1217,16 +1217,22 @@ Debug( "Reading xml", DEBUG_LEVEL );
 local ($/);
 $xml = <>;
 
-# If the email was encoded (BugMail::MessageToMTA() does it when using UTF-8),
-# we have to decode it first, else the XML parsing will fail.
-my $parser = MIME::Parser->new;
-$parser->output_to_core(1);
-$parser->tmp_to_core(1);
-my $entity = $parser->parse_data($xml);
-my $bodyhandle = $entity->bodyhandle;
-$xml = $bodyhandle->as_string;
-
-# remove everything in file before xml header (i.e. remove the mail header)
+# If there's anything besides whitespace before <?xml then we guess it's a mail
+# and MIME::Parser should parse it. Else don't.
+if ($xml =~ m/\S.*<\?xml/s ) {
+
+    # If the email was encoded (BugMail::MessageToMTA() does it when using UTF-8),
+    # we have to decode it first, else the XML parsing will fail.
+    my $parser = MIME::Parser->new;
+    $parser->output_to_core(1);
+    $parser->tmp_to_core(1);
+    my $entity = $parser->parse_data($xml);
+    my $bodyhandle = $entity->bodyhandle;
+    $xml = $bodyhandle->as_string;
+
+}
+
+# remove everything in file before xml header
 $xml =~ s/^.+(<\?xml version.+)$/$1/s;
 
 Debug( "Parsing tree", DEBUG_LEVEL );