Hello, i had problems with the Cyrus::SIEVE::managesieve package in the new cyrus 2.4.11 code. The "better response codes for timsieved" lead to problems in the perl package if you try to "get" an nonexistent script:
sieveshell ... > get nonexistant Bad protocol from MANAGESIEVE server: expected RPARAN The perl package expects quoted strings inside the parantheses and these quotes are missing. There are two possible solutions: fix the parser or put quotes around the strings. A possible patch for timsieved using the second alternative is appended. Stefan -- +---------------------+------------------------------------+ | Stefan Rapp | E-Mail: [email protected] | | TU Dortmund | Phone: +49 231 755 4668 | | IT & Medien Centrum | Fax: +49 231 755 2731 | | D-44221 Dortmund | | +---------------------+------------------------------------+
*** cyrus-imapd-2.4.11//timsieved/actions.c Thu Sep 8 20:57:42 2011
--- cyrus-imapd-mx2//timsieved/actions.c Wed Sep 21 11:49:09 2011
***************
*** 235,241 ****
result = stat(path, &filestats);
if (result != 0) {
! prot_printf(conn,"NO (NONEXISTENT) \"Script doesn't exist\"\r\n");
return TIMSIEVE_NOEXIST;
}
size = filestats.st_size;
--- 235,241 ----
result = stat(path, &filestats);
if (result != 0) {
! prot_printf(conn,"NO (\"NONEXISTENT\") \"Script doesn't exist\"\r\n");
return TIMSIEVE_NOEXIST;
}
size = filestats.st_size;
***************
*** 343,349 ****
if (countscripts(string_DATAPTR(name))+1 > maxscripts)
{
prot_printf(conn,
! "NO (QUOTA/MAXSCRIPTS) \"You are only allowed %d scripts on this server\"\r\n",
maxscripts);
return TIMSIEVE_FAIL;
}
--- 343,349 ----
if (countscripts(string_DATAPTR(name))+1 > maxscripts)
{
prot_printf(conn,
! "NO (\"QUOTA/MAXSCRIPTS\") \"You are only allowed %d scripts on this server\"\r\n",
maxscripts);
return TIMSIEVE_FAIL;
}
***************
*** 507,513 ****
snprintf(path, 1023, "%s.script", string_DATAPTR(name));
if (isactive(string_DATAPTR(name))) {
! prot_printf(conn, "NO (ACTIVE) \"Active script cannot be deleted\"\r\n");
return TIMSIEVE_FAIL;
}
--- 507,513 ----
snprintf(path, 1023, "%s.script", string_DATAPTR(name));
if (isactive(string_DATAPTR(name))) {
! prot_printf(conn, "NO (\"ACTIVE\") \"Active script cannot be deleted\"\r\n");
return TIMSIEVE_FAIL;
}
***************
*** 515,521 ****
if (result != 0) {
if (result == ENOENT)
! prot_printf(conn, "NO (NONEXISTENT) \"Script %s does not exist.\"\r\n", string_DATAPTR(name));
else
prot_printf(conn,"NO \"Error deleting script\"\r\n");
return TIMSIEVE_FAIL;
--- 515,521 ----
if (result != 0) {
if (result == ENOENT)
! prot_printf(conn, "NO (\"NONEXISTENT\") \"Script %s does not exist.\"\r\n", string_DATAPTR(name));
else
prot_printf(conn,"NO \"Error deleting script\"\r\n");
return TIMSIEVE_FAIL;
***************
*** 624,630 ****
if (exists(string_DATAPTR(name))==FALSE)
{
! prot_printf(conn,"NO (NONEXISTENT) \"Script does not exist\"\r\n");
return TIMSIEVE_NOEXIST;
}
--- 624,630 ----
if (exists(string_DATAPTR(name))==FALSE)
{
! prot_printf(conn,"NO (\"NONEXISTENT\") \"Script does not exist\"\r\n");
return TIMSIEVE_NOEXIST;
}
***************
*** 681,687 ****
if (num > maxscriptsize)
{
prot_printf(conn,
! "NO (QUOTA/MAXSIZE) \"Script size is too large. "
"Max script size is %ld bytes\"\r\n",
maxscriptsize);
return TIMSIEVE_FAIL;
--- 681,687 ----
if (num > maxscriptsize)
{
prot_printf(conn,
! "NO (\"QUOTA/MAXSIZE\") \"Script size is too large. "
"Max script size is %ld bytes\"\r\n",
maxscriptsize);
return TIMSIEVE_FAIL;
***************
*** 693,699 ****
if (countscripts(string_DATAPTR(sieve_name))+1 > maxscripts)
{
prot_printf(conn,
! "NO (QUOTA/MAXSCRIPTS) \"You are only allowed %d scripts on this server\"\r\n",
maxscripts);
return TIMSIEVE_FAIL;
}
--- 693,699 ----
if (countscripts(string_DATAPTR(sieve_name))+1 > maxscripts)
{
prot_printf(conn,
! "NO (\"QUOTA/MAXSCRIPTS\") \"You are only allowed %d scripts on this server\"\r\n",
maxscripts);
return TIMSIEVE_FAIL;
}
smime.p7s
Description: S/MIME Cryptographic Signature
