Loading CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel S (11 Feb 2008) - Yang Tse pointed out a few remaining quirks from my timeout refactoring from Feb 7 that didn't abort properly on timeouts. These are actually old problems but now they should be fixed. Yang Tse (10 Feb 2008) - Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out and provides test program that demonstrates that libcurl might not set error Loading lib/qssl.c +7 −2 Original line number Diff line number Diff line Loading @@ -175,8 +175,13 @@ static CURLcode Curl_qsossl_handshake(struct connectdata * conn, int sockindex) /* figure out how long time we should wait at maximum */ timeout_ms = Curl_timeleft(conn, NULL, TRUE); /* SSL_Handshake() timeout resolution is second, so round up. */ if(timeout_ms < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } /* SSL_Handshake() timeout resolution is second, so round up. */ h->timeout = (timeout_ms + 1000 - 1) / 1000; /* Set-up protocol. */ Loading lib/socks.c +12 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ CURLcode Curl_SOCKS4(const char *proxy_name, /* get timeout */ timeout = Curl_timeleft(conn, NULL, TRUE); if(timeout < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } Curl_nonblock(sock, FALSE); /* Loading Loading @@ -394,6 +400,12 @@ CURLcode Curl_SOCKS5(const char *proxy_name, /* get timeout */ timeout = Curl_timeleft(conn, NULL, TRUE); if(timeout < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } Curl_nonblock(sock, TRUE); /* wait until socket gets connected */ Loading lib/tftp.c +19 −7 Original line number Diff line number Diff line Loading @@ -189,16 +189,24 @@ const struct Curl_handler Curl_handler_tftp = { * * **********************************************************/ static void tftp_set_timeouts(tftp_state_data_t *state) static CURLcode tftp_set_timeouts(tftp_state_data_t *state) { time_t maxtime, timeout; long timeout_ms; time(&state->start_time); if(state->state == TFTP_STATE_START) { /* Compute drop-dead time */ timeout_ms = Curl_timeleft(state->conn, NULL, TRUE); if(timeout_ms < 0) { /* time-out, bail out, go home */ failf(state->conn->data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } if(state->state == TFTP_STATE_START) { maxtime = (time_t)(timeout_ms + 500) / 1000; state->max_time = state->start_time+maxtime; Loading @@ -219,8 +227,6 @@ static void tftp_set_timeouts(tftp_state_data_t *state) } else { /* Compute drop-dead time */ timeout_ms = Curl_timeleft(state->conn, NULL, TRUE); if(timeout_ms > 0) maxtime = (time_t)(timeout_ms + 500) / 1000; else Loading Loading @@ -250,6 +256,8 @@ static void tftp_set_timeouts(tftp_state_data_t *state) "set timeouts for state %d; Total %d, retry %d maxtry %d\n", state->state, (state->max_time-state->start_time), state->retry_time, state->retry_max); return CURLE_OK; } /********************************************************** Loading Loading @@ -343,13 +351,17 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event) case TFTP_EVENT_ACK: /* Connected for transmit */ infof(data, "%s\n", "Connected for transmit"); state->state = TFTP_STATE_TX; tftp_set_timeouts(state); res = tftp_set_timeouts(state); if(res) break; return tftp_tx(state, event); case TFTP_EVENT_DATA: /* connected for receive */ infof(data, "%s\n", "Connected for receive"); state->state = TFTP_STATE_RX; tftp_set_timeouts(state); res = tftp_set_timeouts(state); if(res) break; return tftp_rx(state, event); case TFTP_EVENT_ERROR: Loading Loading
CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel S (11 Feb 2008) - Yang Tse pointed out a few remaining quirks from my timeout refactoring from Feb 7 that didn't abort properly on timeouts. These are actually old problems but now they should be fixed. Yang Tse (10 Feb 2008) - Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out and provides test program that demonstrates that libcurl might not set error Loading
lib/qssl.c +7 −2 Original line number Diff line number Diff line Loading @@ -175,8 +175,13 @@ static CURLcode Curl_qsossl_handshake(struct connectdata * conn, int sockindex) /* figure out how long time we should wait at maximum */ timeout_ms = Curl_timeleft(conn, NULL, TRUE); /* SSL_Handshake() timeout resolution is second, so round up. */ if(timeout_ms < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } /* SSL_Handshake() timeout resolution is second, so round up. */ h->timeout = (timeout_ms + 1000 - 1) / 1000; /* Set-up protocol. */ Loading
lib/socks.c +12 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ CURLcode Curl_SOCKS4(const char *proxy_name, /* get timeout */ timeout = Curl_timeleft(conn, NULL, TRUE); if(timeout < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } Curl_nonblock(sock, FALSE); /* Loading Loading @@ -394,6 +400,12 @@ CURLcode Curl_SOCKS5(const char *proxy_name, /* get timeout */ timeout = Curl_timeleft(conn, NULL, TRUE); if(timeout < 0) { /* time-out, bail out, go home */ failf(data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } Curl_nonblock(sock, TRUE); /* wait until socket gets connected */ Loading
lib/tftp.c +19 −7 Original line number Diff line number Diff line Loading @@ -189,16 +189,24 @@ const struct Curl_handler Curl_handler_tftp = { * * **********************************************************/ static void tftp_set_timeouts(tftp_state_data_t *state) static CURLcode tftp_set_timeouts(tftp_state_data_t *state) { time_t maxtime, timeout; long timeout_ms; time(&state->start_time); if(state->state == TFTP_STATE_START) { /* Compute drop-dead time */ timeout_ms = Curl_timeleft(state->conn, NULL, TRUE); if(timeout_ms < 0) { /* time-out, bail out, go home */ failf(state->conn->data, "Connection time-out"); return CURLE_OPERATION_TIMEDOUT; } if(state->state == TFTP_STATE_START) { maxtime = (time_t)(timeout_ms + 500) / 1000; state->max_time = state->start_time+maxtime; Loading @@ -219,8 +227,6 @@ static void tftp_set_timeouts(tftp_state_data_t *state) } else { /* Compute drop-dead time */ timeout_ms = Curl_timeleft(state->conn, NULL, TRUE); if(timeout_ms > 0) maxtime = (time_t)(timeout_ms + 500) / 1000; else Loading Loading @@ -250,6 +256,8 @@ static void tftp_set_timeouts(tftp_state_data_t *state) "set timeouts for state %d; Total %d, retry %d maxtry %d\n", state->state, (state->max_time-state->start_time), state->retry_time, state->retry_max); return CURLE_OK; } /********************************************************** Loading Loading @@ -343,13 +351,17 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event) case TFTP_EVENT_ACK: /* Connected for transmit */ infof(data, "%s\n", "Connected for transmit"); state->state = TFTP_STATE_TX; tftp_set_timeouts(state); res = tftp_set_timeouts(state); if(res) break; return tftp_tx(state, event); case TFTP_EVENT_DATA: /* connected for receive */ infof(data, "%s\n", "Connected for receive"); state->state = TFTP_STATE_RX; tftp_set_timeouts(state); res = tftp_set_timeouts(state); if(res) break; return tftp_rx(state, event); case TFTP_EVENT_ERROR: Loading