︙ | | | ︙ | |
339
340
341
342
343
344
345
346
347
348
349
350
351
352
|
dprintf("Callback is running, reading 0 bytes");
bytesRead = 0;
goto input;
}
if (!SSL_is_init_finished(statePtr->ssl)) {
bytesRead = Tls_WaitForConnect(statePtr, errorCodePtr);
if (bytesRead <= 0) {
dprintf("Got an error (bytesRead = %i)", bytesRead);
if (*errorCodePtr == ECONNRESET) {
dprintf("Got connection reset");
/* Soft EOF */
|
>
|
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
|
dprintf("Callback is running, reading 0 bytes");
bytesRead = 0;
goto input;
}
if (!SSL_is_init_finished(statePtr->ssl)) {
dprintf("Calling Tls_WaitForConnect");
bytesRead = Tls_WaitForConnect(statePtr, errorCodePtr);
if (bytesRead <= 0) {
dprintf("Got an error (bytesRead = %i)", bytesRead);
if (*errorCodePtr == ECONNRESET) {
dprintf("Got connection reset");
/* Soft EOF */
|
︙ | | | ︙ | |
433
434
435
436
437
438
439
440
441
442
443
444
445
446
|
/* don't process any bytes while verify callback is running */
written = -1;
*errorCodePtr = EAGAIN;
goto output;
}
if (!SSL_is_init_finished(statePtr->ssl)) {
written = Tls_WaitForConnect(statePtr, errorCodePtr);
if (written <= 0) {
dprintf("Tls_WaitForConnect returned %i (err = %i)", written, *errorCodePtr);
goto output;
}
}
|
>
|
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
|
/* don't process any bytes while verify callback is running */
written = -1;
*errorCodePtr = EAGAIN;
goto output;
}
if (!SSL_is_init_finished(statePtr->ssl)) {
dprintf("Calling Tls_WaitForConnect");
written = Tls_WaitForConnect(statePtr, errorCodePtr);
if (written <= 0) {
dprintf("Tls_WaitForConnect returned %i (err = %i)", written, *errorCodePtr);
goto output;
}
}
|
︙ | | | ︙ | |
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
|
*/
Tcl_DeleteTimerHandler(statePtr->timer);
statePtr->timer = (Tcl_TimerToken) NULL;
}
if (statePtr->flags & TLS_TCL_CALLBACK) {
return 0;
}
if (statePtr->flags & TLS_TCL_INIT
&& !SSL_is_init_finished(statePtr->ssl)) {
int errorCode = 0;
if (Tls_WaitForConnect(statePtr, &errorCode) <= 0 && errorCode == EAGAIN) {
dprintf("Async flag could be set (didn't check) and errorCode == EAGAIN");
return 0;
}
}
return mask;
}
/*
*------------------------------------------------------*
*
|
>
<
|
>
>
|
>
>
|
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
|
*/
Tcl_DeleteTimerHandler(statePtr->timer);
statePtr->timer = (Tcl_TimerToken) NULL;
}
if (statePtr->flags & TLS_TCL_CALLBACK) {
dprintf("Returning 0 due to callback");
return 0;
}
if ((statePtr->flags & TLS_TCL_INIT) && !SSL_is_init_finished(statePtr->ssl)) {
int errorCode = 0;
dprintf("Calling Tls_WaitForConnect");
if (Tls_WaitForConnect(statePtr, &errorCode) <= 0 && errorCode == EAGAIN) {
dprintf("Async flag could be set (didn't check) and errorCode == EAGAIN: Returning 0");
return 0;
}
}
dprintf("Returning %i", mask);
return mask;
}
/*
*------------------------------------------------------*
*
|
︙ | | | ︙ | |
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
|
if (statePtr->flags & TLS_TCL_ASYNC) {
dprintf("E! ");
*errorCodePtr = EAGAIN;
return -1;
} else {
continue;
}
} else if (err == 0) {
if (SSL_in_init(statePtr->ssl)) {
dprintf("SSL_in_init() is true");
}
if (Tcl_Eof(statePtr->self)) {
dprintf("Error = 0 and EOF is set");
if (rc != SSL_ERROR_SYSCALL) {
dprintf("Error from some reason other than our BIO, returning 0");
return 0;
}
}
dprintf("CR! ");
*errorCodePtr = ECONNRESET;
return -1;
}
if (statePtr->flags & TLS_TCL_SERVER) {
err = SSL_get_verify_result(statePtr->ssl);
if (err != X509_V_OK) {
Tls_Error(statePtr,
|
|
>
|
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
|
if (statePtr->flags & TLS_TCL_ASYNC) {
dprintf("E! ");
*errorCodePtr = EAGAIN;
return -1;
} else {
continue;
}
} else if (err <= 0) {
if (SSL_in_init(statePtr->ssl)) {
dprintf("SSL_in_init() is true");
}
if (Tcl_Eof(statePtr->self)) {
dprintf("Error = 0 and EOF is set");
if (rc != SSL_ERROR_SYSCALL) {
dprintf("Error from some reason other than our BIO, returning 0");
return 0;
}
}
dprintf("CR! ");
statePtr->flags |= TLS_TCL_HANDSHAKE_FAILED;
*errorCodePtr = ECONNRESET;
return -1;
}
if (statePtr->flags & TLS_TCL_SERVER) {
err = SSL_get_verify_result(statePtr->ssl);
if (err != X509_V_OK) {
Tls_Error(statePtr,
|
︙ | | | ︙ | |