添加CURLOPT_TIMEOUT_MS后,curl不发送任何内容

时间:2017-09-07 20:02:23

标签: c++ firebase curl timeout

我有一个while循环,在该循环中我将一个PUT请求发送到google firebase REST api。它运行得很好,但是如果我想把事情搞定(while循环等待每一轮循环的卷曲响应,有时非常慢,超过200ms),我正在尝试添加CURLOPT_TIMEOUT_MS和设置为1毫秒。

TLDR; 添加行后

curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 1L);

我的卷发不再向服务器发送任何内容了。或者服务器是否以某种方式强制客户端从请求中接收返回值?

2 个答案:

答案 0 :(得分:1)

如果没有在 1毫秒内完成操作,则告诉curl操作失败。没有多少请求快速完成,特别是如果您使用DNS或仅通过Internet使用连接,则不会。

所以是的,大多数转移只会返回CURLE_OPERATION_TIMEDOUT(28)而没有内容。

答案 1 :(得分:0)

这是CURL的错误。

如果您的超时设置小于1s,则会直接返回错误。

解决方案是:

curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);

conn是CURL的指针,例如:

CURL *conn = NULL;
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);