• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tarantool / tarantool / 16784
83%
master: 88%

Build:
Build:
LAST BUILD BRANCH: release/2.11
DEFAULT BRANCH: master
Ran 29 Apr 2019 08:02PM UTC
Jobs 1
Files 305
Run time 28s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
16784

push

travis-ci

locker
<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">&quot;&gt;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&amp;#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&amp;#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

Jobs
ID Job ID Ran Files Coverage
5 16784.5 (TARGET=coverage) 29 Apr 2019 08:02PM UTC 0
82.54
Travis Job 16784.5
Source Files on build 16784
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #16784
  • 1a7476e6 on github
  • Prev Build on 1.10 (#16772)
  • Next Build on 1.10 (#16787)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc