Well, seems that I need to join the club. Exactly the same error.
Everything is fine when calling request_token, receiving a callback and calling access_token - I am getting oauth_token and oauth_token_secret as expected.
Then I’m calling https://stream.twitter.com/1.1/statuses/filter.json?follow=14306768 (or ?track=twitterapi, doesn’t really matter) and get the dreaded error.
I’m using Drupal’s Feeds module with Feeds OAuth module (https://drupal.org/project/feeds_oauth) and php-proauth library (https://code.google.com/p/php-proauth/) if that matters.
Now, a funny thing - when I generate a cURL command using yours OAuth Tool and execute it in verbose mode this is how the conversation looks:
$ curl --request 'POST' 'https://stream.twitter.com/1.1/statuses/filter.json' --data 'follow=14306768' --header 'Authorization: OAuth oauth_consumer_key="xxxxx", oauth_nonce="xxxxx", oauth_signature="xxxxx", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1377980375", oauth_token="xxxxx", oauth_version="1.0"' --verbose
* About to connect() to stream.twitter.com port 443 (#0)
* Trying 199.16.156.110... connected
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using RC4-SHA
* Server certificate:
* subject: C=US; ST=California; L=San Francisco; O=Twitter, Inc.; OU=Twitter Security; CN=stream.twitter.com
* start date: 2013-06-28 00:00:00 GMT
* expire date: 2013-12-31 23:59:59 GMT
* subjectAltName: stream.twitter.com matched
* issuer: C=US; O=VeriSign, Inc.; OU=VeriSign Trust Network; OU=Terms of use at https://www.verisign.com/rpa (c)10; CN=VeriSign Class 3 Secure Server CA - G3
* SSL certificate verify ok.
> POST /1.1/statuses/filter.json HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: stream.twitter.com
> Accept: */*
> Authorization: OAuth oauth_consumer_key="xxxxx", oauth_nonce="xxxxx", oauth_signature="xxxxx", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1377980375", oauth_token="xxxxx", oauth_version="1.0"
> Content-Length: 15
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 15out of 15 bytes
< HTTP/1.1 200 OK
< Content-Type: application/json
< Transfer-Encoding: chunked
<
I’m getting only 3 headers from Twitter, no valid content at all, after which the execution does not stop, printing a new empty line every more or less 30 seconds - until I finally decide to kill it. It does not stop itself. Guess this is the reason why for example PHP cURL implementations time out.
Just in case tried ntpdate too, but the offset was marginal, so it shouldn’t be an issue here.