Skip to content
Snippets Groups Projects
Guillaume Roguez's avatar
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
History
Name Last commit Last update