anchor.diff:                  | TLS.DontWrite conn -> wrapRead conn
               else
                   TLS.refuse conn q
  +                closed <- true
                   raise (IOException(sprintf "TLS-HS: Asked to authorize a certificate"))
  -        | TLS.Handshaken conn -> wrapRead conn
  +        | TLS.Handshaken conn -> closed <- false; wrapRead conn
           | TLS.Read (conn,msg) ->
               let read = undoMsg_i conn msg in
               if equalBytes read empty_bytes then
  
positive.code:     let rec wrapRead conn =
          match TLS.read conn with
          | TLS.ReadError (adOpt,err) ->
              match adOpt with
              | None -> raise (IOException(sprintf "TLS-HS: Internal error: %A" err))
              | Some ad -> raise (IOException(sprintf "TLS-HS: Sent fatal alert: %A %A" ad err))
          | TLS.Close ns -> closed <- true; (conn,empty_bytes) // This is a closed connection, should not be used!
          | TLS.Fatal ad -> raise (IOException(sprintf "TLS-HS: Received fatal alert: %A" ad))
          | TLS.Warning (conn,ad) -> raise (IOException(sprintf "TLS-HS: Received warning alert: %A" ad))
          | TLS.CertQuery (conn,q,advice) ->
              if advice then
                  match TLS.authorize conn q with
                  | TLS.ReadError (adOpt,err) ->
                      match adOpt with
                      | None -> raise (IOException(sprintf "TLS-HS: Internal error: %A" err))
                      | Some ad -> raise (IOException(sprintf "TLS-HS: Sent fatal alert: %A %A" ad err))
                  | TLS.Close ns -> closed <- true; (conn,empty_bytes) // This is a closed connection, should not be used!
                  | TLS.Fatal ad -> raise (IOException(sprintf "TLS-HS: Received fatal alert: %A" ad))
                  | TLS.Warning (conn,ad) -> raise (IOException(sprintf "TLS-HS: Received warning alert: %A" ad))
                  | TLS.CertQuery (conn,q,advice) -> raise (IOException(sprintf "TLS-HS: Asked to authorize a certificate twice"))
                  | TLS.Handshaken conn -> wrapRead conn
                  | TLS.Read (conn,msg) ->
                      let read = undoMsg_i conn msg in
                      if equalBytes read empty_bytes then
  
negative.code:              * are synchronized. *)
              let epoch = TLS.getEpochIn conn in
              TLS.getSessionInfo epoch
  
      member self.ReHandshake (?config) =
          let config = defaultArg config options
          if closed || disposed then
              raise (ObjectDisposedException("Trying to rehandshake on a closed connection."))
          let res = 
              match b with
              | TLSServer -> TLS.request conn config
              | TLSClient -> TLS.rehandshake conn config
          match res with
              | (false,_) -> raise (IOException("Cannot rehandshake in current protocol state."))
              | (_,c) ->
                  conn <- doHS c
                  self.GetSessionInfo()
  
      override this.get_CanRead()     = not closed
      override this.get_CanWrite()    = not closed
  