[2.2.3] Fun with Outlook Express...

+archive.info-cyrus at utdallas.edu +archive.info-cyrus at utdallas.edu
Thu Feb 12 13:45:11 EST 2004


Well, a colleague here reported spurious disconnects when attempting
to check his mail via Outlook Express.  I noticed that a number of
his telemetry logs ended with:

03ZJ OK Completed (0.000 sec)
<1076565897<03ZK IDLE
>1076565897>+ idling
>1076565897>* BYE Connection reset by peer

Yeah, I know that a "reset by peer" means the client went away, but
he was not experiencing any network connectivity problems what so
ever.

OK, so after searching the archives, I thought I'd try adding these
two lines to our imapd.conf:

timeout: 60
imapidlepoll: 0

I then did a "touch" of all our Cyrus binaries so I wouldn't have to
wait for the max use limit to get reached.  (Handy little feature of
2.2.3, I might add.)

This morning I checked with him, and he reports that Outlook Express
is now working much more smoothly.  No spurious disconnects.  The
end?  Hardly.

I just now happened to notice that the load on the box was reaching
levels I've never seen before.  I did a truss on one of these
processes, and this is what I saw:

13397:  read(0, " 4 4 Z P   I D L E\r\n", 4096)         = 11
13397:  open("/po/var/imap/msg/shutdown", O_RDONLY)     Err#2 ENOENT
13397:  poll(0xFFBEDD58, 1, 0)                          = 0
13397:          fd=0  ev=POLLRDNORM rev=0
13397:  write(1, 0x00151408, 31)                        = 31
13397:     4 4 Z P   B A D   U n r e c o g n i z e d   c o m m a n d\r\n
13397:  time()                                          = 1076608804
13397:  poll(0xFFBEDD58, 1, 40000)                      = 1
13397:          fd=0  ev=POLLRDNORM rev=POLLRDNORM
13397:  time()                                          = 1076608804
13397:  read(0, " 4 4 Z Q   I D L E\r\n", 4096)         = 11
13397:  open("/po/var/imap/msg/shutdown", O_RDONLY)     Err#2 ENOENT
13397:  poll(0xFFBEDD58, 1, 0)                          = 0
13397:          fd=0  ev=POLLRDNORM rev=0
13397:  write(1, 0x00151408, 31)                        = 31
13397:     4 4 Z Q   B A D   U n r e c o g n i z e d   c o m m a n d\r\n
13397:  time()                                          = 1076608804
13397:  poll(0xFFBEDD58, 1, 40000)                      = 1
13397:          fd=0  ev=POLLRDNORM rev=POLLRDNORM
13397:  time()                                          = 1076608804
13397:  read(0, " 4 4 Z R   I D L E\r\n", 4096)         = 11
13397:  open("/po/var/imap/msg/shutdown", O_RDONLY)     Err#2 ENOENT
13397:  poll(0xFFBEDD58, 1, 0)                          = 0
13397:          fd=0  ev=POLLRDNORM rev=0
13397:  write(1, 0x00151408, 31)                        = 31
13397:     4 4 Z R   B A D   U n r e c o g n i z e d   c o m m a n d\r\n
13397:  time()                                          = 1076608804
13397:  poll(0xFFBEDD58, 1, 40000)                      = 1
13397:          fd=0  ev=POLLRDNORM rev=POLLRDNORM
13397:  time()                                          = 1076608804
13397:  read(0, " 4 4 Z S   I D L E\r\n", 4096)         = 11
13397:  open("/po/var/imap/msg/shutdown", O_RDONLY)     Err#2 ENOENT
13397:  poll(0xFFBEDD58, 1, 0)                          = 0
13397:          fd=0  ev=POLLRDNORM rev=0
13397:  write(1, 0x00151408, 31)                        = 31
13397:     4 4 Z S   B A D   U n r e c o g n i z e d   c o m m a n d\r\n
13397:  time()                                          = 1076608804
13397:  poll(0xFFBEDD58, 1, 40000)                      = 1
13397:          fd=0  ev=POLLRDNORM rev=POLLRDNORM
13397:  time()                                          = 1076608804
13397:  read(0, " 4 4 Z T   I D L E\r\n", 4096)         = 11
13397:  open("/po/var/imap/msg/shutdown", O_RDONLY)     Err#2 ENOENT


Sigh.  Damn, I know people like this client, but I am so friggin' sick
and tired of it.  So much pandering to this empire.

Anyway... any thoughts as to what to try now?  Should I recompile with
--with-idle=no, or should I try --with-idle=idled?  Would idled pose
the same problems he was originally seeing with the default, using poll?

Maybe in the future Cyrus should keep track of the number of errors,
then forcibly disconnect if that error count went beyond a certain
number?

-- 
Amos
---
Home Page: http://asg.web.cmu.edu/cyrus
Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list