Check-in [e10ce6579d]
Overview
Comment:More specific check for non-BIO failures
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tls-1-7
Files: files | file ages | folders
SHA1: e10ce6579d66c143c37bf6a217843e0119f2712f
User & Date: rkeene on 2016-12-07 15:34:37
Other Links: branch diff | manifest | tags
Context
2016-12-07
16:20
Fixed check for SSL_set_tlsext_host_name and added support for forcing options that were manually specified check-in: 4aedc3e201 user: rkeene tags: tls-1-7
15:34
More specific check for non-BIO failures check-in: e10ce6579d user: rkeene tags: tls-1-7
15:25
Added a check for a BIO error check-in: 79ea996cac user: rkeene tags: tls-1-7
Changes
Modified tlsIO.c from [b1a0a715c4] to [43589242ff].
930
931
932
933
934
935
936
937
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
966
967
930
931
932
933
934
935
936







937
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







-
-
-
-
-
-
-














-
+

+
+
-
+
+








	    if (rc == SSL_ERROR_SSL) {
		Tls_Error(statePtr,
			(char *)ERR_reason_error_string(ERR_get_error()));
                statePtr->flags |= TLS_TCL_HANDSHAKE_FAILED;
		*errorCodePtr = ECONNABORTED;
		return -1;
	    } else if (rc == SSL_ERROR_SYSCALL) {
                dprintf("Got an error from our BIO");
                Tls_Error(statePtr,
                        (char *)ERR_reason_error_string(ERR_get_error()));
                statePtr->flags |= TLS_TCL_HANDSHAKE_FAILED;
                *errorCodePtr = ECONNABORTED;
                return -1;
	    } else if (BIO_should_retry(statePtr->bio)) {
		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, returning with 0");
                    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;
                        return 0;
                    }
                }
		dprintf("CR! ");
		*errorCodePtr = ECONNRESET;
		return -1;
	    }
	    if (statePtr->flags & TLS_TCL_SERVER) {
		err = SSL_get_verify_result(statePtr->ssl);