HCL
Skip to main content  
 
   


SPRTechnote


Only one or two clients can connect over SSL on IMAP on Solaris 8 and 9

Technote Number: 1219984


Problem:
This issue was reported to Quality Engineering as SPR# MDLS6DGJA5, and was
fixed in Domino 6.5.4 Fix Pack 2.

Excerpt from the Lotus Domino Release 6.5.5 MR and 6.5.4 Fix Pack 2 fix lists
(available at http://www.ibm.com/developerworks/lotus/):

Networking & Dialup
SPR# MDLS6DGJA5 - Fixed a problem with IOCP stream reads broken on Solaris

Refer to the Upgrade Central site for details on upgrading Notes/Domino.

The problem occurs only when running IMAP with SSL on Solaris under certain
conditions.


Supporting Information:

How IOCP on Solaris works when the server is reading from the network:
Bytes arrive at the device.
The driver interrupt occurs and code moves bytes to the kernel buffer.
The driver calls the Domino notify driver.
The Domino notify driver gets the count of total bytes available to be read and
sends it to the IOCP control thread.
The IOCP control thread updates the total number of bytes to be read ENDP
structure and wakes up a worker thread.
The worker thread does a read, then decrements the total number of bytes
available by how much it read.

The problem occurs under item 5 above. The shipped code adds the total number
of bytes available to the current number available. Expected behavior would be
to add the number of bytes that have just arrived to the current number
available. The driver doesn't know how many have just arrived, only the number
there at that moment.

This problem does not occur for NRPC because NRPC is a single request and a
single response. The number already there is always 0 for NRPC, so adding the
total number available to zero gives the right result.

IMAP allows clients to send multiple requests at the same time, and then get
back multiple responses in any order. So, it is possible for bytes to arrive
when there are also unread bytes sitting in the buffer. If the ENDP value for
bytes available is 20, and 20 new bytes arrive, the control thread adds the
total number of bytes available (40) to the number that Domino already knew
about (20) and gets 60.

The number of bytes available determines how the worker threads wait for IO.
When this number is incorrectly calculated, the problem occurs.
More >





  Document options
Print this document
Print view

  Search
Search Advanced Search


  Fix list views

 RSS feeds   RSS
Subscribe to the fix list

  Resources
Using this database
View notices

  HCL Support
HCL Support


    About HCL Privacy Contact