|
Ran
|
Jobs
1
|
Files
305
|
Run time
28s
|
Badge
README BADGES
|
push
travis-ci
<a href="https://github.com/tarantool/tarantool/commit/<a class=hub.com/tarantool/tarantool/commit/1a7476e6b082b7a53a58045b1acfb59aaee68365">1a7476e6b<a href="https://github.com/tarantool/tarantool/commit/1a7476e6b082b7a53a58045b1acfb59aaee68365">">httpc: fix zero timeout handling When libcurl is built with --enable-threaded-resolver (which is default) and the version of the library is 7.60 or above, libcurl calls a timer callback with exponentially increasing timeout_ms value during DNS resolving. This behaviour was introduced in curl-7_59_0-36-g67636222f (see [1], [2]). During first ten milliseconds the library sets a timer to a passed time divided by three (see Curl_resolver_getsock()). It is possible that passed time is zero during at least several thousands of iterations. Before this commit we didn&#39;t set a libev timer in curl_multi_timer_cb() when a timeout_ms value is zero, but call curl_multi_process() immediately. Libcurl however can call curl_multi_timer_cb() again and here we&#39;re going into a recursion that stops only when timeous_ms becomes positive. Often we generate several thousands of stack frames within this recursion and exceed 512KiB of a fiber stack size. The fix is easy: set a libev timer to call curl_multi_process() even when a timeout_ms value is zero. The reason why we did the call to curl_multi_process() immediately is the unclear wording in the CURLMOPT_TIMERFUNCTION option documentation. This documentation page was fixed in curl-7_64_0-88-g47e540df8 (see [3], [4], [5]). There is also the related change in curl-7_60_0-121-g3ef67c686 (see [6], [7]): after this commit libcurl calls a timer callback with zero timeout_ms during a first three milliseconds of asynchronous DNS resolving. Fixes #4179. [1]: https://github.com/curl/curl/pull/2419 [2]: https://github.com/curl/curl/commit/</a><a class="double-link" href="https://github.com/tarantool/tarantool/commit/<a class="double-link" href="https://github.com/tarantool/tarantool/commit/67636222f42b7db146b963deb577a981b4fcdfa2">67636222f</a>">67636222f</a><a href="https://github.com/tarantool/tarantool/commit/1a7476e6b082b7a53a58045b1acfb59aaee68365"> [3]: https://github.com/curl/curl/issues/3537 [4]: https:... (continued)
1 of 1 new or added line in 1 file covered. (100.0%)
41581 of 50377 relevant lines covered (82.54%)
858611.03 hits per line
| ID | Job ID | Ran | Files | Coverage | |
|---|---|---|---|---|---|
| 5 | 16784.5 (TARGET=coverage) | 0 |
82.54 |
Travis Job 16784.5 |