axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Mitchell (JIRA)" <>
Subject [jira] Updated: (AXIS2C-830) libcurl interface not multithreaded
Date Wed, 12 Dec 2007 20:03:43 GMT


Bill Mitchell updated AXIS2C-830:

    Attachment: libcurl_diff

The attached diff file contains the changes to axis2_http_transport_sender.c, axis2_http_sender.c
& .h, and axis2_libcurl.c & .h to maintain the curl handle in the axis2_libcurl structure
and to make the axis2_libcurl structure be owned by the axis2_http_transport_sender structure.
 This allows the curl handle to be persistent for the life of the client service.  

While working on this change, I came across a memory leak in the axis2_libcurl_write_memory_callback().
 When it expands the size of the buffer by reallocating it, the old instance of the buffer
is not freed.  This oversight is remedied in the attached source changes.  

I have verified this change by running multiple, e.g., 4, concurrent client threads each performing
SOAP exchanges to a set of SOAP services.  

> libcurl interface not multithreaded
> -----------------------------------
>                 Key: AXIS2C-830
>                 URL:
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: transport/http
>    Affects Versions: 1.1.0
>         Environment: Windows XP, Visual Studio 2005, build uses libcurl and guththila
>            Reporter: Bill Mitchell
>         Attachments: libcurl_diff
> Axis2C support of libcurl is not multithreaded, i.e., it cannot be invoked by a multithreaded
client application.  This despite the fact that libcurl is multithreaded and Axis2C is multithreaded.
 The crux of the issue lies in the static global definition of the curl handler in axis2_libcurl.c.
 This prevents multiple client threads from obtaining multiple connections to issue concurrent
SOAP operations.  

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message