[OpenSIPS-Devel] [OpenSIPS/opensips] 1b4ff6: [rest_client] Fix async connection logic

Liviu Chircu noreply at github.com
Mon Apr 26 11:02:28 EST 2021


  Branch: refs/heads/3.1
  Home:   https://github.com/OpenSIPS/opensips
  Commit: 1b4ff6da684d54928af33ac20dad685b8e1951d0
      https://github.com/OpenSIPS/opensips/commit/1b4ff6da684d54928af33ac20dad685b8e1951d0
  Author: John Burke <john at voxtelesys.net>
  Date:   2021-04-26 (Mon, 26 Apr 2021)

  Changed paths:
    M modules/rest_client/rest_methods.c

  Log Message:
  -----------
  [rest_client] Fix async connection logic

Fixes #2483

(cherry picked from commit 98c6652a08869f5eb82295c9e6b8a419a8e1b128)


  Commit: 35b691815ec88255f4d379e235a987957bba6bbe
      https://github.com/OpenSIPS/opensips/commit/35b691815ec88255f4d379e235a987957bba6bbe
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2021-04-26 (Mon, 26 Apr 2021)

  Changed paths:
    M modules/rest_client/rest_methods.c

  Log Message:
  -----------
  rest_client: Fix async rest_get() stalling with local web server

Similar issue to #2483, where the async GET operation would stall
indefinitely, due to curl_multi_perform() not being called multiple
times during the single invocation of the "resume" callback.

In this case, the issue was caused by a misplaced "enable_expect_100"
check.  Not using the "Expect: 100" feature doesn't mean that
curl_multi_perform() should be called at most once.

Using libcurl 7.68

(cherry picked from commit fc88b2c99238c85c53fabf363b5ba1393d54c10d)


  Commit: 82085f5e58c913310e1e68c45c936e2be713ee9b
      https://github.com/OpenSIPS/opensips/commit/82085f5e58c913310e1e68c45c936e2be713ee9b
  Author: Liviu Chircu <liviu at opensips.org>
  Date:   2021-04-26 (Mon, 26 Apr 2021)

  Changed paths:
    M io_wait.h

  Log Message:
  -----------
  io_watch_del(): Suppress DEL errors for closed fds

Similar fix to 21344d1f7 (from 6 years ago), but for newer Linux kernels
(e.g. 5.8.0), which return ENOENT instead of EBADF.  Fixes:

DBG:rest_client:_resume_async_http_req: HTTP response code: 200
DBG:tm:io_watch_del: [UDP_worker] io_watch_del op on index -1 246
    (0x561edd52c560, 246, -1, 0x10,0x1) fd_no=5 called
ERROR:tm:io_watch_del: [UDP_worker] removing fd from epoll
    (246 from 171) list failed: No such file or directory [2]
(cherry picked from commit 4e43db731a5500163141607d9400e42a74d2f293)


Compare: https://github.com/OpenSIPS/opensips/compare/bbf58fc148f5...82085f5e58c9



More information about the Devel mailing list