Overview
Comment: | Added more info to comments |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | tls-1.8 |
Files: | files | file ages | folders |
SHA3-256: |
fdb58ae4589050880af5e67e4feab469 |
User & Date: | bohagan on 2024-06-08 01:51:27 |
Other Links: | branch diff | manifest | tags |
Context
2024-06-08
| ||
20:49 | Cache read/write wants from BIO_read/BIO_write and include in watch mask check-in: 268b7a0965 user: bohagan tags: tls-1.8 | |
01:51 | Added more info to comments check-in: fdb58ae458 user: bohagan tags: tls-1.8 | |
2024-06-07
| ||
23:02 | Test case fixes check-in: 0e844836ab user: bohagan tags: tls-1.8 | |
Changes
Modified generic/tlsIO.c
from [93e5605483]
to [fad08a4111].
︙ | ︙ | |||
22 23 24 25 26 27 28 | /* *------------------------------------------------------------------- * * TlsBlockModeProc -- * * This procedure is invoked by the generic IO level | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /* *------------------------------------------------------------------- * * TlsBlockModeProc -- * * This procedure is invoked by the generic IO level * to set channel to blocking or nonblocking mode. * * Results: * 0 if successful or POSIX error code if failed. * * Side effects: * Sets the device into blocking or nonblocking mode. * |
︙ | ︙ | |||
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | dprintf("TlsCloseProc(%p)", (void *) statePtr); Tls_Clean(statePtr); Tcl_EventuallyFree((ClientData)statePtr, Tls_Free); return 0; } static int TlsClose2Proc(ClientData instanceData, /* The socket state. */ Tcl_Interp *interp, /* For errors - can be NULL. */ int flags) /* Flags to close read and/or write side of channel */ { State *statePtr = (State *) instanceData; dprintf("TlsClose2Proc(%p)", (void *) statePtr); if ((flags & (TCL_CLOSE_READ|TCL_CLOSE_WRITE)) == 0) { return TlsCloseProc(instanceData, interp); } return EINVAL; } /* *------------------------------------------------------* * * Tls_WaitForConnect -- * * Result: * 0 if successful, -1 if failed. * * Side effects: * Issues SSL_accept or SSL_connect * *------------------------------------------------------* */ int Tls_WaitForConnect(State *statePtr, int *errorCodePtr, int handshakeFailureIsPermanent) { unsigned long backingError; | > > > > > > > > > > > > | | 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | dprintf("TlsCloseProc(%p)", (void *) statePtr); Tls_Clean(statePtr); Tcl_EventuallyFree((ClientData)statePtr, Tls_Free); return 0; } /* *------------------------------------------------------------------- * * TlsClose2Proc -- * * Similar to TlsCloseProc, but allows for separate close read and * write side of channel. * *------------------------------------------------------------------- */ static int TlsClose2Proc(ClientData instanceData, /* The socket state. */ Tcl_Interp *interp, /* For errors - can be NULL. */ int flags) /* Flags to close read and/or write side of channel */ { State *statePtr = (State *) instanceData; dprintf("TlsClose2Proc(%p)", (void *) statePtr); if ((flags & (TCL_CLOSE_READ|TCL_CLOSE_WRITE)) == 0) { return TlsCloseProc(instanceData, interp); } return EINVAL; } /* *------------------------------------------------------* * * Tls_WaitForConnect -- * * Perform connect (client) or accept (server) * * Result: * 0 if successful, -1 if failed. * * Side effects: * Issues SSL_accept or SSL_connect * *------------------------------------------------------* */ int Tls_WaitForConnect(State *statePtr, int *errorCodePtr, int handshakeFailureIsPermanent) { unsigned long backingError; int err, rc = 0; int bioShouldRetry; *errorCodePtr = 0; dprintf("WaitForConnect(%p)", (void *) statePtr); dprintFlags(statePtr); if (!(statePtr->flags & TLS_TCL_INIT)) { |
︙ | ︙ | |||
698 699 700 701 702 703 704 | } /* *------------------------------------------------------------------- * * Tls_GetParent -- * | | | 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 | } /* *------------------------------------------------------------------- * * Tls_GetParent -- * * Get parent channel for a stacked channel. * * Results: * Tcl_Channel or NULL if none. * *------------------------------------------------------------------- */ Tcl_Channel Tls_GetParent(State *statePtr, int maskFlags) { |
︙ | ︙ | |||
720 721 722 723 724 725 726 | } /* *------------------------------------------------------------------- * * TlsSetOptionProc -- * | | < | 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 | } /* *------------------------------------------------------------------- * * TlsSetOptionProc -- * * Sets an option value for a SSL socket based channel. * * Results: * TCL_OK if successful or TCL_ERROR if failed. * * Side effects: * Updates channel option to new value. * |
︙ | ︙ | |||
747 748 749 750 751 752 753 | Tcl_DriverSetOptionProc *setOptionProc; dprintf("Called"); setOptionProc = Tcl_ChannelSetOptionProc(Tcl_GetChannelType(downChan)); if (setOptionProc != NULL) { return (*setOptionProc)(Tcl_GetChannelInstanceData(downChan), interp, optionName, optionValue); | < < < < < | 758 759 760 761 762 763 764 765 766 767 768 769 770 771 | Tcl_DriverSetOptionProc *setOptionProc; dprintf("Called"); setOptionProc = Tcl_ChannelSetOptionProc(Tcl_GetChannelType(downChan)); if (setOptionProc != NULL) { return (*setOptionProc)(Tcl_GetChannelInstanceData(downChan), interp, optionName, optionValue); } /* * Request for a specific option has to fail, we don't have any. */ return Tcl_BadChannelOption(interp, optionName, ""); } |
︙ | ︙ | |||
856 857 858 859 860 861 862 | } /* *------------------------------------------------------------------- * * TlsWatchProc -- * | > | | 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 | } /* *------------------------------------------------------------------- * * TlsWatchProc -- * * Initialize the event notifier to watch for events of interest * from this channel. * * Results: * None. * * Side effects: * Sets up the notifier so that a future event on the channel * will be seen by Tcl. |
︙ | ︙ | |||
937 938 939 940 941 942 943 | } /* *------------------------------------------------------------------- * * TlsGetHandleProc -- * | | | | 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 | } /* *------------------------------------------------------------------- * * TlsGetHandleProc -- * * This procedure is invoked by the generic IO level to retrieve a * device-specific handle from the SSL socket based channel. * * Results: * The appropriate Tcl_File handle or NULL if none. * * Side effects: * None. * |
︙ | ︙ | |||
962 963 964 965 966 967 968 | } /* *------------------------------------------------------------------- * * TlsNotifyProc -- * | | > > | | 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 | } /* *------------------------------------------------------------------- * * TlsNotifyProc -- * * This procedure is invoked by the generic IO level to notify the * channel that an event occurred. It is used by stacked channel * drivers that wish to be notified of events that occur on the * underlying (stacked) channel. * * Results: * Type of event or 0 if failed * * Side effects: * May process the incoming event by itself. * |
︙ | ︙ |