Hi all,
I've recently been playing with Dovecot 2.0's Director proxy as a backend for Roundcube. I've been using Dovecot 1.2 for months without problems, but since switching to the Director I've had problems with Apache processes getting stuck. It looks like imapproxy is getting disconnected while inactive, and is therefore disconnecting Roundcube just after LOGIN. I'm trying to figure out why it's getting disconnected, but in the mean time I thought I'd investigate the Roundcube behavior.
[root@webmail ~]# grep 'Maximum execution time' /var/log/roundcubemail/errors | awk '{print $14 ":" $17}' | sort | uniq -c 2 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:169 1 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:171 6 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:173 7 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:348 11 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:349 6 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:350 4 /usr/share/roundcubemail/program/include/rcube_imap_generic.php:356
The problem here is that there are LOTS of places in the rcube_imap_generic code (old ilohamail, I know) that run in a DO...WHILE loop around readLine and don't ever check to see if it's returning NULL. I know that this is intended to loop around possible untagged IMAP replies until the desired response line is found, but there needs to be some code to break out of the loop if a NULL is encountered.
There are so many places that this would need to be fixed that I'm not really sure where to start, or even if my patch would be accepted.
Alec, Thomas, what do you guys think?
-Brad _______________________________________________ List info: http://lists.roundcube.net/dev/
Brad Davidson wrote:
The problem here is that there are LOTS of places in the rcube_imap_generic code (old ilohamail, I know) that run in a DO...WHILE loop around readLine and don't ever check to see if it's returning NULL.
I know that this is intended to loop around possible untagged IMAP replies until the desired response line is found, but there needs to be some code to break out of the loop if a NULL is encountered.
There are so many places that this would need to be fixed that I'm not really sure where to start, or even if my patch would be accepted.
Create a patch and we'll see ;) I don't see a solution for this issue other than checking for NULL in every place where it could happen.
On 12.07.2010 23:32, Brad Davidson wrote:
The problem here is that there are LOTS of places in the rcube_imap_generic code (old ilohamail, I know) that run in a DO...WHILE loop around readLine and don't ever check to see if it's returning NULL. I know that this is intended to loop around possible untagged IMAP replies until the desired response line is found, but there needs to be some code to break out of the loop if a NULL is encountered.
There are so many places that this would need to be fixed that I'm not really sure where to start, or even if my patch would be accepted.
I've reviewed the code again. I've made some fixes in r3958 and now I don't see more places with infinite loop possibility. Get as to know if you find some.