I have an application that utilizes a webservice, via curl, through a squid 
proxy. The application was working fine until the o/s was upgraded from AS3 to 
CentOS5 with various library upgrades. Now although the application still 
builds with no errors or warnings, the application cannot connect to the 
webservice through squid, although it can connect directly to the webservice.

The version of curl on AS3 was curl-7.10.6-9 whilst the new version on CentOS5 
is curl-7.15.5-2

The version of squid is 2.6.STABLE6-5, on CentOS5 and is running in forwarding 
mode.

I have checked all the api calls against the current online curl documentation 
and it all seems to be okay but I do not claim to be an expert^^

Here is an extract of what is going on, obtained using CURLOPT_VERBOSE & 
CURLOPT_STDERR



======================================================================================
* About to connect() to proxy pxy1.internal.network port 3128
*   Trying 192.168.0.1... * connected
* Connected to pxy1.internal.network (192.168.0.1) port 3128
* Establish HTTP proxy tunnel to test.com:443
> CONNECT test.com:443 HTTP/1.0
Host: test.com:443
Proxy-Connection: Keep-Alive

< HTTP/1.0 200 Connection established
<
* Proxy CONNECT aborted
* Closing connection #0
* failure when receiving data from the peer
======================================================================================



One thing to mention about that output, though hit may be a red herring, as we 
are not
convinced about the wireshark output on the AS3 server is that the 2 lines

Host: test.com:443
Proxy-Connection: Keep-Alive

only seem to appear when run on the CentoOS5 server.

Here is a snippet of code with all the relevant curl api usages

I have snipped the overly verbose error handling and normal processing as it is 
not
relevant to this problem. Instead please accept my assurances that everything 
else in
the code works. Indeed the whole application works if I rebuild it on AS3 with 
the older
curl library targeting the same destination squid with the same data payload.



======================================================================================
// global initialization
CURLcode last_error = curl_global_init(CURL_GLOBAL_SSL);

<snipped error handling>

// easy initialization
curlHandle = curl_easy_init();

<snipped error handling>

// set options
curl_easy_setopt(curlHandle, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curlHandle, CURLOPT_URL, URL.c_str());
curl_easy_setopt(curlHandle, CURLOPT_HTTPPOST, 1);
curl_easy_setopt(curlHandle, CURLOPT_POSTFIELDS, formdata.c_str());
curl_easy_setopt(curlHandle, CURLOPT_POSTFIELDSIZE, formdata.size());
curl_easy_setopt(curlHandle, CURLOPT_PROXY, proxy.c_str());
curl_easy_setopt(curlHandle, CURLOPT_HEADERFUNCTION, writeHeader);
curl_easy_setopt(curlHandle, CURLOPT_HEADERDATA, this);
curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, writeData);
curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, this);

<snipped data processing>

// execute
int status = curl_easy_perform(curlHandle);

BOOM! it bails at this point with an error code 56
======================================================================================



In addition to that code, I have also played about by adding various 
permutations of
these curl options as well but nothing works :(

curl_easy_setopt(curlHandle, CURLOPT_HEADER, 1);
curl_easy_setopt(curlHandle, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curlHandle, CURLOPT_HTTPPROXYTUNNEL, 1);

Hey, a drowning man will clutch at straws :)

So please can anyone think of anything silly that I missed during my scouring 
of the API,
bearing in mind I have a limited knowledge of what I am attempting to do here, 
lol.


-------------------------------------------------
Peter Walker
Senior Developer

Ticketmaster UK Ltd. 
48 Leicester Square
London WC2H 7LR
 
 
T: +44 (0) 20 7344 4000
F: +44 (0) 20 7915 0411
E:[email protected]
E:[email protected]
 
DISCLAIMER: This e-mail is private and confidential and may contain proprietary 
or legally privileged information. It is for the intended recipient only. If 
you have received this email in error, please notify the author by replying to 
it and then destroy it. If you are not the intended recipient you must not use, 
disclose, distribute, copy, print or rely on this e-mail or any attachment.  
Ticketmaster UK Limited Registered in England No. 2662632. Registered Office, 
48 Leicester Square, London WC2H 7LR
-------------------------------------------------

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to