[ 
https://issues.apache.org/jira/browse/AXIS2C-830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

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: https://issues.apache.org/jira/browse/AXIS2C-830
>             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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to