The information you gave me I set it right now on the application
server and client.

As I mentioned before, the server is multiplexed supporting multiple
clients. I wrote a C client and I have my java client as well (on
experimental phase). The server acts as a "forwarder" sending data
received from a client to all the others. I realized that when I
connect only one "yet-another-echo-client" to the server, comunication
goes well, in the term that the client receives it's own info back
again from the server, both the C client and the Java client.

For this I use file descriptor association, and believe me that my
code is pretty full of error checking with SSL_get_error() and I check
all the SSL_<functions>(). The problem is that seems that the file
descriptor associaton does not work when you associate more than one
(not at the same time of course) file descriptor, although no error
return from SSL_set_fd(), nor from *_wfd() and *_rfd().

I read the man pages and when you associate a different file
descriptor, BIO_free() will be called so I forgot about releasing or
something like that.

On the client side, if more than one clients are connected I do get an
error on SLL_read() function:

[ERR]: SSL_read() was unsuccessful (errCode: 1, ret: -1)

and the openssl error:

4787:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or
bad record mac:s3_pkt.c:422:

What I'm in concern is that I followed your advices and set TLSv1 as
method for both client and server. Clients really says so:

Connection made with version: TLSv1, cipher: AES256-SHA

And the error string is preffixed with "SSL3_GET_RECORD". Though this
error does not shown when one client is connected and the info is
shared ok between server and client (C and Java clients as well). So,
they are communicating ok.

The main thing here is the file descriptor association I think. I hate
to ask, because I like reading and I read the man pages about almost
everything concerning my needs on the openssl library. I also try
setting the file descriptors for reading and for writting.

The main code of that part (already testing FD_ISSET() and knowing
that a client is sending data to the server) is:

http://pastebin.lugmen.org.ar/5217

I included my debug code to give information of what i've done. I also
have tryed using SSL_set_wfd() and SSL_set_rfd() on the respectively
places. The code is NOT exactly as the one I have, i removed comments
and maybe a ';' is missing. I say this just in case someone would say
that I have missings {'s and if-else's are wrong. I insist it should
be a bad file descriptor association by my part, or lack of theory in
SSL communications.

Best regards,
-- 
Sebastián Treu
http://labombiya.com.ar
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to