2010-06-08 14 views
13

Estoy recibiendo el siguiente error al intentar un SSL_write:¿Por qué estoy recibiendo "error: error 1409F07F: rutinas SSL: SSL3_WRITE_PENDING: error de escritura incorrecta" al intentar escribir SSL_write?

error:1409F07F:SSL routines:SSL3_WRITE_PENDING: bad write retry

+0

Hey puede separar usted pregunta de su respuesta, para que pueda aceptar su propia respuesta si usted piensa que es correcto. Gracias por tu consejo – Matias

+0

Gracias por la idea, hice lo que sugeriste, ¡10 veces! –

Respuesta

22

La razón es bastante simple: cuando SSL_Write regresa con SSL_ERROR_WANT_WRITE o SSL_ERROR_WANT_READ, hay que repetir la llamada a SSL_write con los mismos parámetros exactos de nuevo, después de la condición está satisfecha (lectura/escritura disponible en el zócalo).

Llamarlo con diferentes parámetros, producirá el error de reintento de escritura 1409F07F malo.

Por ejemplo, cuando SSL_write (ssl, ptr, tamaño) con ptr = 0xABCDEFGH, tamaño = 4096 falla con SSL_ERROR_WANT_READ o SSL_ERROR_WANT_WRITE, cuando de volver a intentar la llamada SSL_write, los parámetros ptr y el tamaño debe ser el mismo. No es equivalente si ptr es otro puntero que apunta a una copia de los mismos contenidos que en la llamada original.

Sin embargo, este comportamiento predeterminado de SSL_write se puede cambiar configurando SSL_MODE_ENABLE_PARTIAL_WRITE y/o SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER.


Gracias por @ShriramV para los comentarios aclaratorios, integrados a la respuesta

+1

Puede por favor ellbaorate 10x – codersofthedark

+0

@dragonsupercool Por ejemplo, si primero SSL_write con el búfer de destino X desplaza Y y el tamaño Z, debe volver a llamar con los mismos valores para todos los parámetros, ya que la operación de escritura intentará reanudarse desde donde dejó apagado (o algo así, aquí es donde mi conocimiento termina; p) –

+0

@Amit - esto no tiene sentido. ¿Está diciendo que si llama a SSL_write con 500 bytes de datos y devuelve 100 (diciendo que envió solo 100 bytes), con un código de error de SSL_ERROR_WANT_READ, debe volver a llamarlo con los 100 bytes ya enviados, así como el restantes 400 bytes? –

Cuestiones relacionadas