Skip to content

Commit

Permalink
axtls: add timeout within Curl_axtls_connect
Browse files Browse the repository at this point in the history
This allows test 405 to pass on axTLS.
  • Loading branch information
dfandrich committed Mar 31, 2015
1 parent 6419aee commit 049fe7f
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion lib/vtls/axtls.c
Expand Up @@ -464,9 +464,11 @@ Curl_axtls_connect(struct connectdata *conn,
int sockindex)

{
struct SessionHandle *data = conn->data;
CURLcode conn_step = connect_prep(conn, sockindex);
int ssl_fcn_return;
SSL *ssl = conn->ssl[sockindex].ssl;
long timeout_ms;

if(conn_step != CURLE_OK) {
Curl_axtls_close(conn, sockindex);
Expand All @@ -475,14 +477,23 @@ Curl_axtls_connect(struct connectdata *conn,

/* Check to make sure handshake was ok. */
while(ssl_handshake_status(ssl) != SSL_OK) {
/* check allowed time left */
timeout_ms = Curl_timeleft(data, NULL, TRUE);

if(timeout_ms < 0) {
/* no need to continue if time already is up */
failf(data, "SSL connection timeout");
return CURLE_OPERATION_TIMEDOUT;
}

ssl_fcn_return = ssl_read(ssl, NULL);
if(ssl_fcn_return < 0) {
Curl_axtls_close(conn, sockindex);
ssl_display_error(ssl_fcn_return); /* goes to stdout. */
return map_error_to_curl(ssl_fcn_return);
}
/* TODO: avoid polling */
usleep(10000);
/* TODO: check for timeout as this could hang indefinitely otherwise */
}
infof (conn->data, "handshake completed successfully\n");

Expand Down

0 comments on commit 049fe7f

Please sign in to comment.