Skip to content
  • Guillaume Roguez's avatar
    make TlsSession great again · bdafdfb4
    Guillaume Roguez authored
    
    
    Or at least independant of underlaying transport...
    
    To make TlsSession able to handle both TLS and DTLS
    this patch removes the ICE dependency and replace is
    by the generic network ABC class 'GenericTransport'.
    As a first step this class is declared in tls_session.h.
    Side effects of this change are:
    
    * refactoring of PMTUD procedure: 'MTU' for gnutls has the meaning
      on 'payload-for-gnutls' so this information is now drived by
      the generic transport and not hardcoded anymore.
      The minimal value of probing remains hardcoded, as is a minimum
      given by RFC's documentation and it's based on an IPv4 packet
      associated with UDP protocol.
    
    * getMtu() is now maxPayload() and represent correctly what
      the application must have.
    
    * TlsSession implements itself GenericTransport: we can chain
      GenericTransport instances to construct an overlayed transport
      protocol.
    
    * TlsSession is now considered as non thread-safe for its public API.
      Caller must bring itself this property.
      This permit to remove a redundant mutex in send() operation.
      Note: and it's the case in the only user (SipsIceTransport),
      that why the mutex is redundant in 100% of cases.
    
    Notice the benefit of this genericity refactoring let us
    write a unit-test for this TlsSession class without having
    an heavy ICE transport to mock-up.
    
    Also ICE transport gained of this by adding a new IceSocketTransport
    to replace IceSocket in a near future (need async IO in GenericSocket,
    but not required for the moment).
    
    Change-Id: I6f4591ed6c76fa9cb5519c6e9296f8fc3a6798aa
    Reviewed-by: default avatarOlivier Soldano <olivier.soldano@savoirfairelinux.com>
    bdafdfb4