El 28/07/2016 a las 17:05, Thomas Jarosch via Cyrus-devel escribió:
On Thursday, 28. July 2016 16:48:51 Sebastian Hagedorn wrote:
According to the RFC, clients need to "renew" the IDLE state at least
every 30 minutes. I would assume that the clients you see are doing that.
If not, you might see a different issue.

I tested it a few days ago: Connected to imapd on a unix socket
and started the IDLE command.

-> the session was still running today :)

There is no server side timeout in cyrus imapd.

AFAIK there are 2 different idle implementations in cyrus imapd.
An "internal" one ("idle polling") and a "daemon" one (idled).
I don't know really what are the differences between them.

I use "idled" daemon, enabled in cyrus.conf

Looking into idled.c from v2.5.8 there is a timeout:

    /* Set inactivity timer (convert from minutes to seconds) */
    idle_timeout = config_getint(IMAPOPT_TIMEOUT);
    if (idle_timeout < 30) idle_timeout = 30;
    idle_timeout *= 60;
...
    case IDLE_MSG_NOTIFY:
...
        /* send a message to all clients idling on mboxname */
        t = (struct ientry *) hash_lookup(msg->mboxname, &itable);
        for ( ; t ; t = n) {
            n = t->next;
            if ((t->itime + idle_timeout) < time(NULL)) {
                /* This process has been idling for longer than the timeout
                 * period, so it probably died.  Remove it from the list.
                 */
                if (verbose || debugmode)
                    syslog(LOG_DEBUG, "    TIMEOUT %s\n", 
idle_id_from_addr(&t->remote));

                remove_ientry(msg->mboxname, &t->remote);
            }
            else { /* signal process to update */


Regards,
Carlos Velasco

Reply via email to