Skip to content
Commits on Dec 23, 2011
  1. @badlop
Commits on Dec 19, 2011
  1. @cosgroveb @badlop

    OSX Lion compatibility

    cosgroveb committed with badlop
Commits on Dec 16, 2011
  1. @rraptorr @badlop

    R15 compatibility.

    rraptorr committed with badlop
    R15B introduced some incompatible changes in driver interface.
    Some driver callbacks started using ErlDrvSizeT and ErlDrvSSizeT
    typedef instead of int.
    This patch changes callbacks to use the new typedefs and provides
    compatibility fallbacks for older OTP versions.
Commits on Oct 4, 2011
  1. @rraptorr @badlop

    Protection against billion laughs attack in legacy expat driver.

    rraptorr committed with badlop
    Disable entity expansion completely.
  2. @rraptorr @badlop

    Fix libxml2 parser.

    rraptorr committed with badlop
    Add missing call to reset_context() while resetting parser.
    Fix exmpp hash table in case of -1 length (strcmp() result
    was not compared against 0) which caused check_elems/check_nss
    not to work for libxml2.
  3. @rraptorr @badlop
  4. @rraptorr @badlop

    Use Erlang memory allocation functions in XML parsers.

    rraptorr committed with badlop
    Direct all XML parsers to use Erlang memory allocation functions
Commits on Sep 29, 2011
  1. @ppolv

    Add whitespace ping for client sessions

    ppolv committed
    IF the option {whitespace_ping, Seconds} is
    passed to connect_TCP or connect_SSL,
    then send "\n" on the socket if inactive for that
Commits on Sep 26, 2011
  1. @badlop
Commits on Sep 20, 2011
  1. @rraptorr @badlop

    Enable ECDHE only on OpenSSL 1.0.0e and later.

    rraptorr committed with badlop
    Earlier versions of OpenSSL have security problems with ECDHE.
    See for details.
  2. @rraptorr @badlop
  3. @rraptorr @badlop

    Guard ephemeral DH with ifdefs.

    rraptorr committed with badlop
  4. @rraptorr @badlop

    Support for ECDHE in OpenSSL driver.

    rraptorr committed with badlop
    Adds support for ephemeral elliptic curve Diffie–Hellman in OpenSSL
    driver. Works only with OpenSSL 1.0.0 (OpenSSL 0.9.8 is supposed
    to support ECDHE, but it seems not to work).
  5. @rraptorr @badlop

    Initialize driver data with memset.

    rraptorr committed with badlop
    Driver data structure was initialized in start() one field at
    a time. This is error prone (in fact, bio_read and bio_write
    were not initialized there). Use memset to initialize the whole
    Additionally, set connection and context structures to NULL in
    error path of init_library().
  6. @rraptorr @badlop

    Enable ephemeral Diffie-Hellman parameters in OpenSSL driver.

    rraptorr committed with badlop
    DH parameters (taken from OpenSSL tarball) are hardcoded in
    the source. They are public and this is exactly the same approach
    as taken by various other servers (Apache, nginx).
  7. @rraptorr @badlop

    Decrease CPU usage caused by exmpp_tls:send with large data.

    rraptorr committed with badlop
    Sending one large chunk of data with exmpp_tls:send eats lots of
    CPU power and blocks whole Erlang emulator. This is caused by the
    fact that encrypted output is read from memory BIO in 1k chunks.
    Memory BIO, after reading data, shifts the remaining part.
    If large chunks of data (few MB) is sent and then read in 1k
    chunks, then a _lot_ of shifting is performed eating CPU.
    The solution is to simply allocate binary of the needed size
    (amount of data in memory BIO can be retrieved with
    BIO_ctrl_pending) and then issue only one read that reads the
    whole data.
  8. @rraptorr @badlop

    Disable SSL 2.0 and session cache in OpenSSL driver

    rraptorr committed with badlop
    SSL 2.0 has security flaws and is deprecated for many years.
    Session cache currently does not work anyway (as new SSL
    context is made for every connection) so disable it.
    Additionaly, instruct OpenSSL to free network buffers on idle
    connections (this is available only in OpenSSL 1.0.0).
Commits on Sep 18, 2011
  1. @badlop
Commits on Sep 12, 2011
  1. @rraptorr @badlop

    Fix compatibility with R12B5

    rraptorr committed with badlop
    There is no min/2 function in R12B5.
  2. @rraptorr @badlop

    Use extended marker and driver versioning without SMP support.

    rraptorr committed with badlop
    Extended marker indicates that driver supports additional flags
    like versioning and port level locking. Currently it was only
    used when SMP support was enabled. Versioning seems like a nice
    feature and has nothing to do with SMP (and is present in R12B5)
    so enable it regardless of SMP support.
  3. @rraptorr @badlop

    Fix memory leaks in OpenSSL TLS driver.

    rraptorr committed with badlop
    SSL context and connection structures were never freed.
    Additionally, trusted_certs also was never freed.
  4. @rraptorr @badlop

    Enable port level locking in zlib compression driver.

    rraptorr committed with badlop
    zlib is thread-safe (as long as memory allocation functions it
    uses are thread safe) so enable port level locking in zlib
    compression driver.
  5. @rraptorr @badlop

    Use ERTS allocation functions in exmpp_compress_zlib

    rraptorr committed with badlop
    exmpp_compress_zlib now configures zlib to use ERTS
    allocation functions (driver_alloc/driver_free)
    which are guaranteed to be thread-safe.
  6. @rraptorr @badlop

    Eliminate lock contention on stringprep port

    rraptorr committed with badlop
    exmpp_stringprep module used to open only one port, so there
    was still a lot of lock contention on port access.
    Now it opens as many ports as there are scheduler threads
    (as described in Erlang Efficiency Guide).
  7. @rraptorr @badlop

    Enable port level locking for OpenSSL TLS driver.

    rraptorr committed with badlop
    OTP crypto module is already using OpenSSL and sets some
    global OpenSSL callbacks that are needed to make it thread-safe.
    To avoid problems with own callbacks, start crypto before
    loading OpenSSL driver and enable port level locking if the
    needed callbacks are already set.
  8. @rraptorr @badlop

    Enable port level locking in stringprep driver.

    rraptorr committed with badlop
    By default Erlang uses driver level locking.
    However, it seems there is no reason for stringprep driver not to
    use port level locking, thus reducing lock contention.
Commits on Sep 2, 2011
  1. @badlop
Commits on Aug 16, 2011
  1. @badlop

    Fixes in exmpp_tls:get_peer_certificate/1 (thanks to Janusz Dziemidow…

    badlop committed
    - compatibility with R14
    - fixed case of no certificate
    - documentation update
  2. @badlop

    Functions to retrieve latest "Finished" SSL message (thanks to Janusz…

    badlop committed
    … Dziemidowicz)(EXMPP-58)
Commits on Aug 6, 2011
  1. @ebustos

    Fixed author email address

    ebustos committed
Commits on Jul 5, 2011
  1. @badlop
Commits on Jun 17, 2011
  1. @lmarlow

    Use binaries for xml attribute names in the IQ macro

    lmarlow committed
    The IQ macro is only used by the IQ_GET and IQ_SET macros, which
    are only used by the exmpp_client_pubsub and exmpp_client_disco modules.
Commits on May 31, 2011
  1. @badlop
  2. @badlop
Commits on Mar 30, 2011
  1. @badlop

    Fix typo in EDoc of to_binary/2

    badlop committed
Something went wrong with that request. Please try again.