blogspam: Fix crash when content contained utf-8.
authorJoey Hess <joey@kitenet.net>
Tue, 14 Sep 2010 19:23:16 +0000 (15:23 -0400)
committerJoey Hess <joey@kitenet.net>
Tue, 14 Sep 2010 19:23:28 +0000 (15:23 -0400)
I also tried setting RPC::XML::ENCODING but that did not prevent the crash,
and it seems that blogspam.net doesn't like getting xml encoded in unicode,
since it mis-flagged comments as spammy that way that are normally allowed
through.

IkiWiki/Plugin/blogspam.pm
debian/changelog
doc/bugs/blog_spam_plugin_not_allowing_non-ASCII_chars__63__.mdwn

index 8db3780e8888ee9c9188881e80ae26b6715436ff..f0b6cb2a2742519a2796bce8a863500f34d0d5f0 100644 (file)
@@ -4,6 +4,7 @@ package IkiWiki::Plugin::blogspam;
 use warnings;
 use strict;
 use IkiWiki 3.00;
+use Encode;
 
 my $defaulturl='http://test.blogspam.net:8888/';
 
@@ -68,6 +69,7 @@ sub checkcontent (@) {
 
        my $url=$defaulturl;
        $url = $config{blogspam_server} if exists $config{blogspam_server};
+
        my $client = RPC::XML::Client->new($url);
 
        my @options = split(",", $config{blogspam_options})
@@ -90,12 +92,12 @@ sub checkcontent (@) {
 
        my %req=(
                ip => $session->remote_addr(),
-               comment => defined $params{diff} ? $params{diff} : $params{content},
-               subject => defined $params{subject} ? $params{subject} : "",
-               name => defined $params{author} ? $params{author} : "",
-               link => exists $params{url} ? $params{url} : "",
+               comment => encode_utf8(defined $params{diff} ? $params{diff} : $params{content}),
+               subject => encode_utf8(defined $params{subject} ? $params{subject} : ""),
+               name => encode_utf8(defined $params{author} ? $params{author} : ""),
+               link => encode_utf8(exists $params{url} ? $params{url} : ""),
                options => join(",", @options),
-               site => $config{url},
+               site => encode_utf8($config{url}),
                version => "ikiwiki ".$IkiWiki::version,
        );
        my $res = $client->send_request('testComment', \%req);
index 8b127b574c5b1087666b4c601bac08a9cb5b2216..0eb5810d00dfce11dd64b0039d577896c2eed03d 100644 (file)
@@ -18,6 +18,7 @@ ikiwiki (3.20100832) UNRELEASED; urgency=low
   * actiontabs: Improve tab padding.
   * blueview: Fix display of links to translated pages in the page header.
   * Set isPermaLink="no" for guids in rss feeds. 
+  * blogspam: Fix crash when content contained utf-8.
 
  -- Joey Hess <joeyh@debian.org>  Tue, 07 Sep 2010 12:08:05 -0400
 
index 22242a97fa329ea01db31fd8e9845562839fe41f..265040d67d22ca994c7b56c50aeb8a86373395d8 100644 (file)
@@ -8,3 +8,8 @@ This seems to happen because I had a non-ASCII character in the comment (an elli
 The interesting part is that the comment preview works fine, just the save fails. Probably
 this means that the blogspam plugin is the culprit (hence the error in RPC::XML::Client library).
 I'm using version 3.20100815~bpo50+. Thanks!
+
+> I've filed an upstream bug about this on RPC::XML:
+> <https://rt.cpan.org/Ticket/Display.html?id=61333>
+> 
+> Worked around it in blogspam by decoding. --[[Joey]]