HI,

Recently we encounter SSL_ERROR_SSL error on client side.  Our application code(initialization, handshaking, read and write) is common for sslv2 and sslv3.

It happens when we turn on sslv3.  But when we turn off sslv3 but using sslv2, the problem goes away.

 

The following are the setup we are using.

  1. freebsd 4.9 and freebsd 5.3
  2. For freebsd 5.3, we use openssl-0.9.7d_1.tbz
  3. we are using TLS1_VERSION for ssl client and ssl server.
  4. The messages we send and read are fairly small.  It is less 1K.

 

When we send messages fast from ssl client to ssl server, on the ssl client side sometimes we get

SSL_ERROR_SSL(read:1) reason='error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry'.

 

When we turn of sslv3 dynamically and using sslv2, everything goes fine.  We suspect something like

1.  Is there any initialization, handshaking, read and write interfaces that we should call differently between sslv2 and sslv3?

2.  Has anyone seen this behavior.

 

The following is the struct ssl_st content at the moment the ssl client encounter SSL_ERROR_SSL.

(gdb) print *sinfo->ssl

$1 = {version = 769, type = 4096, method = 0x28367d80, rbio = 0x83bb700,

  wbio = 0x83bb700, bbio = 0x0, rwstate = 3, in_handshake = 0,

  handshake_func = 0x2834a5e0 <ssl3_connect>, server = 0, new_session = 0,

  quiet_shutdown = 0, shutdown = 0, state = 3, rstate = 240, init_buf = 0x0,

  init_msg = 0x8498004, init_num = 0, init_off = 0,

  packet = 0x8493000 "\027\003\001", packet_length = 0, s2 = 0x0, s3 = 0x83fdc00,

  read_ahead = 0, msg_callback = 0, msg_callback_arg = 0x0, hit = 0, purpose = 0,

  trust = 0, cipher_list = 0x0, cipher_list_by_id = 0x0,

  enc_read_ctx = 0x84a6700, read_hash = 0x2844b520, expand = 0x0,

  enc_write_ctx = 0x84a6500, write_hash = 0x2844b520, compress = 0x0,

  cert = 0x83bdf00, sid_ctx_length = 0, sid_ctx = '\0' <repeats 31 times>,

  session = 0x83f6e00, generate_session_id = 0, verify_mode = 0,

  verify_depth = -1, verify_callback = 0, info_callback = 0, error = 0,

  error_code = 0, ctx = 0x83f9200, debug = 0, verify_result = 20, ex_data = {

    sk = 0x0, dummy = 0}, client_CA = 0x0, references = 1, options = 0, mode = 0,

  max_cert_list = 102400, first_packet = 0, client_version = 769}

 

Thanks

 

-Eric

 

Reply via email to