phpsslcurlwampfreeze

cURL PUT Requests hangs


I'm using curl to access my CouchDB by HTTP. I recently updated my WAMP to the WAMP 3 64bit which comes with PHP 5.6.16 and Apache 2.4.17. Therefore, since this upgrade, I discovered that I couldn't do PUT request anymore.

Env

  1. PHP 5.6.16
  2. Apache 2.4.17
  3. Windows 10 64 bit
  4. Wamp 3 64 bit

Curl --version

 curl 7.49.1 (x86_64-pc-win32) libcurl/7.49.1 OpenSSL/1.0.2h nghttp2/1.11.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM SSL HTTP2

Code executed

So when I execute this:

<?php
$table="testname";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:5984/' . $table);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'validUser:validPass');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 'Content-type: application/json',
 'Accept: */*'
));

$response = curl_exec($ch);
curl_close($ch);

echo $response;

I get a quick response from the server.

Then, I try to create a database:

<?php
$table = "testname";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:5984/' . $table);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'validUser:validPass');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 'Content-type: application/json',
 'Accept: */*'
));

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Problem
So, when I execute this code, the request will hang on curl_exec. What's weird is that, after the timeout, the request will be received by CouchDB but no response will be given. It seems that my "Put" request are stacked in a buffer and they are waiting to be executed.

Verbose curl output

* Hostname in DNS cache was stale, zapped
*   Trying ::1...
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 5984 (#0)
* Server auth using Basic with user 'validUser'
> PUT /customers HTTP/1.1
Host: localhost:5984
Authorization: Basic dGVzdEFkbWluOnRlc3RQYXNzd29yZA==
Content-type: application/json
Accept: */*

* Operation timed out after 10000 milliseconds with 0 bytes received
* Closing connection 0

Hints

What has been tested

  1. Execute the same command on the command line -> Same result
  2. Try a REST Client on my Atom editor with success
  3. A friend of mine try to access to my database remotely with success (So CouchDB doesn't seem to be the problem)

Solution

  • Even if I tested with my Firewall disabled, uninstalling my antivirus ( Bitdefender Total Security 2016) fixed my issue.