]> git.ipfire.org Git - thirdparty/haproxy.git/commit
DEV: poll: make the connect() step an action as well
authorWilly Tarreau <w@1wt.eu>
Thu, 17 Nov 2022 06:44:27 +0000 (07:44 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 17 Nov 2022 09:56:35 +0000 (10:56 +0100)
commite61064162b96ef5061aecd237363e7f7e9bd144e
treea684a0bb1c86432b65f8f7d2393c1b9a96dc48ff
parent2fd6dbfb0df4497a39ebb0f13f61ec09e485d266
DEV: poll: make the connect() step an action as well

Now the connect() step becomes an action. It's still implicit before
any -c/-s but it allows the listener to close() before connect()
happens, showing the polling status for this condition:

  $ dev/poll/poll -v -l clo -c pol
  #### BEGIN ####
  cmd #1 stp #1: do_clo(3): ret=0
  cmd #2 stp #0: do_con(4): ret=-1 (Connection refused)
  cmd #2 stp #1: do_pol(4): ret=1 ev=0x14 (OUT HUP)
  #### END ####

which differs from a case where the server closes the just accepted
connection:

  $ dev/poll/poll -v -s clo -c pol
  #### BEGIN ####
  cmd #1 stp #0: do_con(4): ret=0
  cmd #1 stp #0: do_acc(3): ret=5
  cmd #1 stp #1: do_clo(5): ret=0
  cmd #2 stp #1: do_pol(4): ret=1 ev=0x2005 (IN OUT RDHUP)
  #### END ####

It's interesting to see OUT+HUP since HUP indicates that both directions
were closed, hence nothing may be written now, thus OUT just wants the
write handler to be notified.
dev/poll/poll.c