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/perl-xs@perl.org/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 debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to