Skip Menu |

This queue is for tickets about the RT-Client-REST CPAN distribution.

Report information
The Basics
Id: 35146
Status: resolved
Priority: 0/
Queue: RT-Client-REST

People
Owner: DAMS [...] cpan.org
Requestors: Elena.Romanova [...] acronis.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.35
Fixed in: (no value)



Subject: bug in RT-Client-REST-0.35
Date: Thu, 17 Apr 2008 14:27:53 +0400
To: bug-RT-Client-REST [...] rt.cpan.org
From: Elena Romanova <Elena.Romanova [...] acronis.com>
Hello, The REST.pm _submit function has bug in _submit function. The HTTP::Response method couldn't set decoded_content. So the content has header with text and the RT-Client-REST couldn't parse response content. The fix diff in attach rest.diff The perl -V in attach perl.version Linux 2.6.9-023stab044.4-smp #1 SMP Thu May 24 17:20:37 MSD 2007 i686 i386 GNU/Linux Regards, Romanova Elena.
--- ./REST.pm 2008-04-17 14:13:56.000000000 +0400 +++ /usr/lib/perl5/vendor_perl/5.8.6/RT/Client/REST.pm 2008-04-15 14:24:11.000000000 +0400 @@ -110,9 +110,8 @@ } else { $id = $self->_valid_numeric_object_id(delete($opts{id})); } - + my $form = form_parse($self->_submit("$type/$id")->decoded_content); - my ($c, $o, $k, $e) = @{$$form[0]}; if (!@$o && $c) { @@ -407,11 +406,10 @@ my $action = delete $opts{action}; my $text = form_compose([[ '', ['Action'], { Action => $action }, ]]); - + my $form = form_parse( $self->_submit("/ticket/$id/take", { content => $text })->decoded_content ); - my ($c, $o, $k, $e) = @{$$form[0]}; if ($e) { @@ -498,8 +496,7 @@ # not sufficiently portable and uncomplicated.) $res->code($1); $res->message($2); - #$res->decoded_content($text); - $res->content($text); + $res->decoded_content($text); #$session->update($res) if ($res->is_success || $res->code != 401); if ($res->header('set-cookie')) { my $jar = HTTP::Cookies->new;
Summary of my perl5 (revision 5 version 8 subversion 6) configuration: Platform: osname=linux, osvers=2.6.9-34.elsmp, archname=i386-linux-thread-multi uname='linux hs20-bc1-4.build.redhat.com 2.6.9-34.elsmp #1 smp fri feb 24 16:56:28 est 2006 i686 i686 i386 gnulinux ' config_args='-des -Doptimize=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -m32 -march=i386 -mtune=pentium4 -fasynchronous-unwind-tables -Dversion=5.8.6 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_endprotoent_r_proto -Ud_endservent_r_proto -Ud_sethostent_r_proto -Ud_setprotoent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.5 5.8.4 5.8.3' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -m32 -march=i386 -mtune=pentium4 -fasynchronous-unwind-tables', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm' ccversion='', gccversion='4.0.2 20051125 (Red Hat 4.0.2-8)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='gcc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=/lib/libc-2.3.5.so, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.3.5' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT Built under linux Compiled at Mar 13 2006 16:40:06 @INC: /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6/i386-linux-thread-multi /usr/lib/perl5/5.8.6 .
Thanks for the report Your patch looks good, I'll apply it soon. dams
From: florian.dufour [...] inria.fr
Le Mer. Mai. 07 10:52:53 2008, DAMS a écrit : Show quoted text
> Thanks for the report > > Your patch looks good, I'll apply it soon.
Be careful, $res->content($text) doesn't work if $text contains non-bytes characters (for example when there is UTF-8 accents). This problem appears with perl 5.10.0 (it works with perl 5.8.8). $res->content(Encode::encode("utf8", $text)) seems to work better (according to HTTP::Message documentation page).
Subject: Re: [rt.cpan.org #35146] bug in RT-Client-REST-0.35
Date: Wed, 7 May 2008 16:23:13 +0000
To: bug-RT-Client-REST [...] rt.cpan.org
From: dams <dams [...] gentoo.org>
On Wed, 07 May 2008 10:58:20 -0400 "Florian Dufour via RT" <bug-RT-Client-REST@rt.cpan.org> wrote: Show quoted text
> > Queue: RT-Client-REST > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=35146 > > > Le Mer. Mai. 07 10:52:53 2008, DAMS a écrit :
> > Thanks for the report > > > > Your patch looks good, I'll apply it soon.
> > Be careful, $res->content($text) doesn't work if $text contains > non-bytes characters (for example when there is UTF-8 accents). This > problem appears with perl 5.10.0 (it works with perl 5.8.8). > > $res->content(Encode::encode("utf8", $text)) seems to work better > (according to HTTP::Message documentation page). >
Yes, but what if the RT server is not in utf8 ? -- dams
From: florian.dufour [...] inria.fr
Le Mer. Mai. 07 11:16:56 2008, dams@gentoo.org a écrit : Show quoted text
> On Wed, 07 May 2008 10:58:20 -0400 > "Florian Dufour via RT" <bug-RT-Client-REST@rt.cpan.org> wrote:
> > $res->content(Encode::encode("utf8", $text)) seems to work better > > (according to HTTP::Message documentation page). > >
> > Yes, but what if the RT server is not in utf8 ?
Then we have a problem ;-) OK, you got the point. However there is a strange behavior : $text string seems to have UTF8 flag, but is badly encoded if we don't use Encode::encode. Weird.
From: florian.dufour [...] inria.fr
Le Mer. Mai. 07 11:40:35 2008, fdufour a écrit : Show quoted text
> Le Mer. Mai. 07 11:16:56 2008, dams@gentoo.org a écrit :
> > On Wed, 07 May 2008 10:58:20 -0400 > > "Florian Dufour via RT" <bug-RT-Client-REST@rt.cpan.org> wrote:
> > > $res->content(Encode::encode("utf8", $text)) seems to work better > > > (according to HTTP::Message documentation page). > > >
> > > > Yes, but what if the RT server is not in utf8 ?
> > Then we have a problem ;-) > > OK, you got the point. However there is a strange behavior : $text > string seems to have UTF8 flag, but is badly encoded if we don't use > Encode::encode. Weird.
OK, I found a workaround for all encodings in RT/Client/REST.pm : 483c483 < my ($head, $text) = split /\n\n/, $res->decoded_content, 2; --- Show quoted text
> my ($head, $text) = split /\n\n/,
$res->decoded_content('charset' => 'none'), 2; Then $res->content($text) works in all case. -- Florian
Subject: Re: [rt.cpan.org #35146] bug in RT-Client-REST-0.35
Date: Wed, 7 May 2008 17:24:19 +0000
To: bug-RT-Client-REST [...] rt.cpan.org
From: dams <dams [...] gentoo.org>
On Wed, 07 May 2008 11:45:27 -0400 "Florian Dufour via RT" <bug-RT-Client-REST@rt.cpan.org> wrote: Show quoted text
> > Queue: RT-Client-REST > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=35146 > > > Le Mer. Mai. 07 11:40:35 2008, fdufour a écrit :
> > Le Mer. Mai. 07 11:16:56 2008, dams@gentoo.org a écrit :
> > > On Wed, 07 May 2008 10:58:20 -0400 > > > "Florian Dufour via RT" <bug-RT-Client-REST@rt.cpan.org> wrote:
> > > > $res->content(Encode::encode("utf8", $text)) seems to work > > > > better (according to HTTP::Message documentation page). > > > >
> > > > > > Yes, but what if the RT server is not in utf8 ?
> > > > Then we have a problem ;-) > > > > OK, you got the point. However there is a strange behavior : $text > > string seems to have UTF8 flag, but is badly encoded if we don't use > > Encode::encode. Weird.
> > OK, I found a workaround for all encodings in RT/Client/REST.pm : > > 483c483 > < my ($head, $text) = split /\n\n/, $res->decoded_content, 2; > ---
> > my ($head, $text) = split /\n\n/,
> $res->decoded_content('charset' => 'none'), 2; > > Then $res->content($text) works in all case. >
Cool, I had a similar idea using $res->content_ref. The key is to not alter the content charset before setting it again, as you said. Thanks for the tip. I'd like to write a test that highlights the bugs, then I'll fix it, probably in the next few days. Cheers -- dams
Should be fixed in 0.36. Can you please test and let me know if the issue is still there ? Thanks
Assuming resolved since it's been so long, and not been reported by anyone else since 0.36 went out.