-
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: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
bdafdfb4