• M
    Simplify SSL BIO buffering logic · 46417569
    Matt Caswell 提交于
    The write BIO for handshake messages is bufferred so that we only write
    out to the network when we have a complete flight. There was some
    complexity in the buffering logic so that we switched buffering on and
    off at various points through out the handshake. The only real reason to
    do this was historically it complicated the state machine when you wanted
    to flush because you had to traverse through the "flush" state (in order
    to cope with NBIO). Where we knew up front that there was only going to
    be one message in the flight we switched off buffering to avoid that.
    
    In the new state machine there is no longer a need for a flush state so
    it is simpler just to have buffering on for the whole handshake. This
    also gives us the added benefit that we can simply call flush after every
    flight even if it only has one message in it. This means that BIO authors
    can implement their own buffering strategies and not have to be aware of
    the state of the SSL object (previously they would have to switch off
    their own buffering during the handshake because they could not rely on
    a flush being received when they really needed to write data out). This
    last point addresses GitHub Issue #322.
    Reviewed-by: NAndy Polyakov <appro@openssl.org>
    46417569
statem.c 24.7 KB