Hi all,
We continued in private to investigate the issue and, after having
rebuilt nnrpd so as to allow gdb to be useful, Raphaël found out
the source of the error.
In nnrpd/post.c during ARTpost(), there is a call to an XS Perl
function HandleHeaders():
/* Store body. */
body = perl_get_sv("body", true);
sv_setpv(body, article);
[…]
modswitch = perl_get_sv("modify_headers", false);
if (SvTRUE(modswitch)) {
hv_undef(hdr);
sv_setsv(body, &PL_sv_undef);
(modswitch is false, because the SvTRUE condition is not executed.)
sv_setsv(body, &PL_sv_undef);
--> returns "Bizarre copy of UNKNOWN."
nnrpd/perl.c, line 179 for the Debian package.
(Line 181 for TRUNK.)
Has someone an idea of what is going on in recent Perl versions?
I see that Marco already experienced that with INN 1.x:
http://www.mail-archive.com/[email protected]/msg02275.html
but there were no replies to his thread.
Is the solution of "body = &PL_sv_undef" working fine?
I also read another possibility:
http://www.nntp.perl.org/group/perl.perl5.porters/2007/10/msg129757.html
SvOK_off(body);
SvGETMAGIC(body);
Another question: isn't there a way not to cause nnrpd to die when
such an error occurs in XS code?
The right behaviour would be to return:
403 Bizarre copy of UNKNOWN.
and to go on the NNTP session.
--
Julien ÉLIE
« – Il t'arrive une tuile ?
– Oui, je ne peux pas payer mon ardoise. »
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]