Hi Stian,

        It worked ... Thanks for your kind suggestion.

Regards,

/Mahesh

On Mon, 2005-03-14 at 11:28, [EMAIL PROTECTED] wrote:
> >     I have tried it by splitting the transaction into 2 parts as
> > client -> server ( actual data size in next call )
> > server -> client ( OK )
> > client -> server ( actual data )
> > server -> client ( received ). This works but because of extra overhead
> > I want to eliminate it. and make it as
> >
> > client -> server ( data length embedded in data )
> > server reads the data in ssl_read loop.
> > server -> client ( received )
> 
> Server has packed foo, which consists of 32 bytes header and a dynamic
> part of 16
> 
> SSL_write(ssl, foo, 48);
> 
> Client does
> 
> while (1)
> {
>   struct header_t header;
>   char dynamic[MAX_SIZE];
>   int size;
> 
>   SSL_read(ssl, &header, 32);
> 
>   size=header.size; /* whatever thingy, and size is set to 16, since
> server told us so */
> 
>   SSL_read(ssl, dynamic, size);
> }
> 
> You need to add in the non-blocking thingy hear if your sockets are
> non-blocking. Optionally make your own _SSL_read() function or macro that
> calls SSL_read and interprates errors at your own wish.
> 
> 
> SSL_read and SSL_write don't have to match in size for the client and the
> server side. They just needs to be recalled on each side with the same
> buffer spec if they didn't finish their buisness for that run.
> 
> Stian
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> Development Mailing List                       [email protected]
> Automated List Manager                           [EMAIL PROTECTED]


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to