Hi,
this must be a frequently requested feature, but I have not found much about  
it in the archives. The basic functionality of SSL should be implementable  
with the following simple interface structure:

 +---------+               +----------+               +-----------+
 |         |               |          |               |           |
 |         | <--rxData()-- |          | <--rxData()-- |           |
 |         |               |          |               |           |
 |         |               |          |               |           |
 |   App   | <--txData()-- |    SSL   | <--txData()-- | Transport |
 |         |               |          |               |           |
 |         |               |          |               |           |
 |         | --wantTx()--> |          | --wantTx()--> |           |
 |         |               |          |               |           |
 +---------+               +----------+               +-----------+

The interface of the SSL consists of six function calls shared with the  
neighbouring layers. The arrows indicate the direction of the call (e.g.  
Transport calls rxData() at SSL). The functions are used as follows:

rxData()
   is called by the lower layer if it has data for the higher layer. The data
   is passed as parameter of the call.
wantTx()
   is called by the higher layer at the lower layer if it wants to send data.
txData()
   is called by the lower layer in reaction to wantTx() when it is ready to
   process a data packet. The data packet may be passed as return value of
   txData().

With this structure, the flow control is governed by the transport layer,  
not by the application. This is usually what is desired.

The usual socket interface is the other way around: The application layer  
calls the transport layer. This creates all kinds of problems with blocking  
vs. non-blocking I/O etc.

Now my question: is such an interface available in SSLeay?


--
Christian Starkjohann
mail: <cs -AT- obdev.at> or <cs -AT- hal.kph.tuwien.ac.at>
web:  http://www.obdev.at/
+-------------------------------------------------------------------------+
| Administrative requests should be sent to [EMAIL PROTECTED] |
| List service provided by Open Software Associates, http://www.osa.com/  |
+-------------------------------------------------------------------------+

Reply via email to