Skip Menu |

This queue is for tickets about the Net-IMAP-Simple CPAN distribution.

Report information
The Basics
Id: 8035
Status: resolved
Priority: 0/
Queue: Net-IMAP-Simple

People
Owner: CFABER [...] cpan.org
Requestors: sommerfeld [...] alum.mit.edu
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 0.95
Fixed in: (no value)



Subject: Expunge doesn't work vs Cyrus IMAP server.
I am using Net::IMAP::Simple::SSL to build a feedback path for spam filtering from IMAP back to spamassassin and spamcop. I'm using Cyrus imapd as the server, and have observed the following glitches/ideosyncracies: 1) cyrus doesn't seem to like EXPUNGE with an argument. I haven't gone hunting through the IMAP RFC's yet but it would seem that you might need to save the current folder, SELECT the folder-to-expunge, EXPUNGE, then SELECT the original folder. 2) cyrus doesn't accept no-argument commands like EXPUNGE and QUIT when there's trailing whitespace in the command, reporting back errors such as: 8 BAD Unexpected extra arguments to Expunge. this causes both the EXPUNGE and QUIT run by the quit() method to fail because _send_cmd() always adds a space after the command verb even if there are no arguments..
From: Patrick von der Hagen
I fixed the mentioned errors with the attached diff. It's not beautiful but gets the job done. ;-) I'm no perl-expert and didn't want to analyse the sourcecode more than necessary. -- CU, Patrick.
396,397c396,401 < _escape( $box ); < --- > if (defined($box) && $box ne '') { > _escape( $box ); > } > else { > $box = undef; > } 490c494,502 < my $cmd = qq[$id $name $value\r\n]; --- > $name = "" unless defined($name); > $value = "" unless defined($value); > my $cmd = undef; > if (defined($value) && $value ne'') { > $cmd = qq[$id $name $value\r\n]; > } > else { > $cmd = qq[$id $name\r\n]; > } 508c520 < if ( $ok == 1 ) { --- > if ( defined($ok) && $ok == 1 ) {