[ https://issues.apache.org/jira/browse/AXIS2C-830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12551533 ]
Bill Mitchell commented on AXIS2C-830: -------------------------------------- Good observations, Senaka, and thank you for asking. I had a second motive in making the curl structure persist at the level of the http_transport_sender. For my project, I need to interoperate with a SOAP service that uses HTTP cookies to maintain the session. libcurl already implements cookie support that will persist for the duration of the handle. So to make this work for SOAP clients, the handle needs to persist as long as the service client, thus, at the level of the http_transport_sender. (I am still working on this change, as it is easy to enable cookies in axis2_libcurl, and I can see how my client application can invoke set_manage_sessions on an options structure, but making the enabling of cookies depend on the manage_sessions options is a trick I've not yet solved. I would welcome suggestions.) Bottom line, it is critical for my project that the handle be owned by the transport_sender. This is not all bad, as the curl documentation mentions that the handler structure must exist as long as curl might invoke any of the callbacks, or access the error buffer area. I was worried until I saw that the axis2_http_transport_sender already had conditional compilation for the libcurl case, so this change does not expand the set of modules that contain libcurl specific information. Regarding the global init, the libcurl documentation on the curl_easy_init() function says that you should not depend on its curl_global_init() call as it is not thread-safe and so not dependable in a multi-threaded application. So it seems to me best to make this invocation explicit at the higher level in Axis2c itself, in the hope that we can find a way for Axis to invoke this at a level that is thread-safe by design or is made thread-safe under a mutex. > 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]