mbox series

[0/8] Add Configurable Online Check TCP Connect Timeout

Message ID 7931960F-4A3F-448E-BDDE-773E48A1789B@nuovations.com (mailing list archive)
Headers show
Series Add Configurable Online Check TCP Connect Timeout | expand

Message

Grant Erickson Nov. 11, 2023, 6:57 p.m. UTC
This introduces support for a configurable "online" HTTP-based Internet
reachability check TCP connection timeout by:

    1. Introducing a new 'OnlineCheckConnectTimeout' setting.
    2. Adding to GWeb a TCP connection timeout member, getter, and setter.
    3. Leveraging both (1) and (2) in the service and WISPr code to pass
       (1) to (2) when so configured.

If the GWeb TCP connect timeout is greater than zero, a GLib connection
timeout timer and callback are added to the session such that, when they
expire, the in flight TCP connection is aborted and the session closure
function invoked with 'GWEB_HTTP_STATUS_CODE_REQUEST_TIMEOUT'.

A TCP connect timeout of zero (0) indicates that no explicit connection
timeout will be used and no timer or callback added to the session,
leaving the timeout to the underlying operating system and its network
stack.

With an operating system default connection time out of roughly 130
seconds, when the 'EnableOnlineToReadyTransition' setting is asserted,
failovers to an alternative network service can take unreasonably long
without such a setting as this since the connection timeout dominates
the failover time.

Grant Erickson (8):
  gweb: Add TCP connect timeout member and getter/setter.
  gweb: Factor out session transport closure.
  gweb: Leverage TCP connect timeout.
  gweb: Add documentation to TCP connect timeout-related functions.
  main: Introduce the 'OnlineCheckConnectTimeout' setting.
  Leverage GWeb connect timeout and 'OnlineCheckConnectTimeout'.
  Add documentation for 'OnlineCheckConnectTimeout'.
  wispr: Add documentation to '__connman_wispr_start'.

 doc/connman.conf.5.in |   9 ++
 gweb/gweb.c           | 286 +++++++++++++++++++++++++++++++++++++++---
 gweb/gweb.h           |   3 +
 src/connman.h         |   1 +
 src/main.c            |  30 +++++
 src/main.conf         |   9 ++
 src/service.c         |  10 +-
 src/wispr.c           |  57 ++++++++-
 8 files changed, 379 insertions(+), 26 deletions(-)

Comments

Marcel Holtmann Nov. 19, 2023, 2:05 p.m. UTC | #1
Hi Grant,

> This introduces support for a configurable "online" HTTP-based Internet
> reachability check TCP connection timeout by:
> 
>    1. Introducing a new 'OnlineCheckConnectTimeout' setting.
>    2. Adding to GWeb a TCP connection timeout member, getter, and setter.
>    3. Leveraging both (1) and (2) in the service and WISPr code to pass
>       (1) to (2) when so configured.
> 
> If the GWeb TCP connect timeout is greater than zero, a GLib connection
> timeout timer and callback are added to the session such that, when they
> expire, the in flight TCP connection is aborted and the session closure
> function invoked with 'GWEB_HTTP_STATUS_CODE_REQUEST_TIMEOUT'.
> 
> A TCP connect timeout of zero (0) indicates that no explicit connection
> timeout will be used and no timer or callback added to the session,
> leaving the timeout to the underlying operating system and its network
> stack.
> 
> With an operating system default connection time out of roughly 130
> seconds, when the 'EnableOnlineToReadyTransition' setting is asserted,
> failovers to an alternative network service can take unreasonably long
> without such a setting as this since the connection timeout dominates
> the failover time.
> 
> Grant Erickson (8):
>  gweb: Add TCP connect timeout member and getter/setter.
>  gweb: Factor out session transport closure.
>  gweb: Leverage TCP connect timeout.
>  gweb: Add documentation to TCP connect timeout-related functions.
>  main: Introduce the 'OnlineCheckConnectTimeout' setting.
>  Leverage GWeb connect timeout and 'OnlineCheckConnectTimeout'.
>  Add documentation for 'OnlineCheckConnectTimeout'.
>  wispr: Add documentation to '__connman_wispr_start'.
> 
> doc/connman.conf.5.in |   9 ++
> gweb/gweb.c           | 286 +++++++++++++++++++++++++++++++++++++++---
> gweb/gweb.h           |   3 +
> src/connman.h         |   1 +
> src/main.c            |  30 +++++
> src/main.conf         |   9 ++
> src/service.c         |  10 +-
> src/wispr.c           |  57 ++++++++-
> 8 files changed, 379 insertions(+), 26 deletions(-)

all 8 patches have been applied.

Regards

Marcel