2012-08-06 19 views
10

quando il server scritto in openssl non sta chiamando SSL_accept, i blocchi SSL_connect del client per sempre. Ci sono alcune funzioni di timeout in openssl -SSL_CTX_set_timeout, SSL_SESSION_set_timeout ma queste non hanno alcun effetto su SSL_connect.openssl ssl_connect blocca per sempre - come impostare il timeout?

Non c'è davvero alcun modo di impostare il timeout per SSL_connect quando ad es. ssl server è bacato e va in loop prima di fare l'handshake SSL?

risposta

10

La libreria OpenSSL offre la massima flessibilità in termini di gestione dei problemi relativi al socket. I blocchi SSL_connect nel tuo caso perché devi usarlo con un socket di blocco. Si prega di usarlo con un socket non bloccante, nel qual caso tornerà con un -1. Se chiami la funzione SSL_get_error che ti darà l'errore SSL_ERROR_WANT_READ o SSL_ERROR_WANT_WRITE a seconda di quando tcp recv o send non è in grado di completare l'operazione rispettivamente.

Quando si ottiene SSL_ERROR_WANT_WRITE/SSL_ERROR_WANT_READ, è necessario chiamare la funzione di selezione passando il socket all'appropriato fd_set e un timeout. Se si seleziona il timeout, è possibile ritenere scaduto il limite SSL_connect.

Nota: Il numero SSL_SESSION_set_timeout viene utilizzato per impostare i valori di timeout della sessione che sono collegati alla ripresa SSL. Non hanno nulla a che fare con il timeout di una connessione.

I link qui sotto dovrebbe aiutare (in particolare il secondo link, Sezione 6, che parla di Multiplexed I/O):

+0

:(risorsa collegata spostato –

+0

Qui ci sono altri link a quei PDF: [part1] (http://vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part1.pdf), e [part2] (http: //vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part2.pdf). Ho pe questo aiuta! – Castaglia

Problemi correlati