Table of Contents

libcurl integration

This page is a place to discuss the integration of libcurl into Kamailio.

There are currently five modules that use the curl library:

Reason for integration

libcurl and some libraries that it uses (openSSL) can conflict if initialised multiple times. If users wish to use more than one feature that depends on libcurl, the conflict must be resolved. This is likely to be achieved by having a single module that wrappers libcurl and is responsible for global initialisation etc. The different ways it can be called can be exported by APIs to other modules.

Requirements

Any more? See also TODO.txt in the curl module

Discussion

The curl module currently offers a synchronous query function which can use named connections set up in modparams. Client certificates and parameters can be configured globally or per connection and there is an exported API. This uses the curl 'easy' interface without worker processes.

The async_http module offers an asynchronous query function which can optionally suspend the transaction. This uses the curl 'multi' interface and creates worker processes.

The final solution will be a combination of these, however consensus should be reached on the architecture. Should these be combined into a single module, or should one depend on the other? It should of course be easy to understand by the end user.

Items to discuss:

Names

Please add your own comments below (hpw)