From 4f283fa60479e42794e9e76a87e173ff2f1102e7 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 5 Jun 2019 14:34:03 +0200 Subject: [PATCH] MEDIUM: stream-int: introduce a new state SI_ST_RDY The main reason for all the trouble we're facing with stream interface error or timeout reports during the connection phase is that we currently can't make the difference between a connection attempt and a validated connection attempt. It is problematic because we tend to switch early to SI_ST_EST but can't always do what we want in this state since it's supposed to be set when we don't need to visit sess_establish() again. This patch introduces a new state betwen SI_ST_CON and SI_ST_EST, which is SI_ST_RDY. It indicates that we've verified that the connection is ready. It's a transient state, like SI_ST_DIS, that cannot persist when leaving process_stream(). For now it is not set, only verified in various tests where SI_ST_CON was used or SI_ST_EST depending on the cases. The stream-int state diagram was minimally updated to reflect the new state, though it is largely obsolete and would need to be seriously updated. --- doc/internals/stream-sock-states.fig | 463 ++++++++++++++++----------- include/proto/stream_interface.h | 7 +- include/types/stream_interface.h | 4 +- src/flt_spoe.c | 2 +- src/stream.c | 10 +- src/stream_interface.c | 25 +- 6 files changed, 311 insertions(+), 200 deletions(-) diff --git a/doc/internals/stream-sock-states.fig b/doc/internals/stream-sock-states.fig index 8e706907b..143d79cd4 100644 --- a/doc/internals/stream-sock-states.fig +++ b/doc/internals/stream-sock-states.fig @@ -1,8 +1,8 @@ -#FIG 3.2 +#FIG 3.2 Produced by xfig version 3.2.7a Portrait Center Metric -A4 +A4 100.00 Single -2 @@ -10,217 +10,200 @@ Single 0 32 #8e8e8e 6 2295 1260 2430 1395 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 1328 68 68 2430 1328 2295 1328 -4 1 0 50 -1 18 5 0.0000 4 60 45 2363 1361 1\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2363 1361 1\001 -6 6 1845 2295 1980 2430 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1913 2363 68 68 1980 2363 1845 2363 -4 1 0 50 -1 18 5 0.0000 4 60 45 1913 2396 2\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 1913 2396 2\001 -6 6 2475 2340 2610 2475 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2543 2408 68 68 2610 2408 2475 2408 -4 1 0 50 -1 18 5 0.0000 4 60 45 2543 2441 9\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2543 2441 9\001 -6 6 2835 2610 2970 2745 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2903 2678 68 68 2970 2678 2835 2678 -4 1 0 50 -1 18 5 0.0000 4 60 45 2903 2711 7\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2903 2711 7\001 -6 6 3195 2025 3330 2160 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 3263 2093 68 68 3330 2093 3195 2093 -4 1 0 50 -1 18 5 0.0000 4 60 45 3263 2126 8\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 3263 2126 8\001 -6 6 2745 2160 2880 2295 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2813 2228 68 68 2880 2228 2745 2228 -4 1 0 50 -1 18 5 0.0000 4 60 45 2813 2261 6\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2813 2261 6\001 -6 6 990 2700 1125 2835 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1058 2768 68 68 1125 2768 990 2768 -4 1 0 50 -1 18 5 0.0000 4 60 90 1058 2801 13\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1058 2801 13\001 -6 6 1305 2970 1440 3105 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1373 3038 68 68 1440 3038 1305 3038 -4 1 0 50 -1 18 5 0.0000 4 60 90 1373 3071 12\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1373 3071 12\001 -6 6 3105 1710 3240 1845 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 3173 1778 68 68 3240 1778 3105 1778 -4 1 0 50 -1 18 5 0.0000 4 60 90 3173 1811 15\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 3173 1811 15\001 -6 6 4275 1260 4410 1395 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 1328 68 68 4410 1328 4275 1328 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 1361 1\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 1361 1\001 -6 6 4275 1440 4410 1575 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 1508 68 68 4410 1508 4275 1508 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 1541 2\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 1541 2\001 -6 6 4275 1620 4410 1755 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 1688 68 68 4410 1688 4275 1688 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 1721 3\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 1721 3\001 -6 6 4275 1800 4410 1935 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 1868 68 68 4410 1868 4275 1868 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 1901 4\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 1901 4\001 -6 6 3240 2835 3375 2970 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 3308 2903 68 68 3375 2903 3240 2903 -4 1 0 50 -1 18 5 0.0000 4 60 90 3308 2936 16\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 3308 2936 16\001 -6 6 2835 3015 2970 3150 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2903 3083 68 68 2970 3083 2835 3083 -4 1 0 50 -1 18 5 0.0000 4 60 90 2903 3116 17\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 2903 3116 17\001 -6 6 2295 3195 2430 3330 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 3263 68 68 2430 3263 2295 3263 -4 1 0 50 -1 18 5 0.0000 4 60 45 2363 3296 3\001 --6 -6 2295 4815 2430 4950 -1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 4883 68 68 2430 4883 2295 4883 -4 1 0 50 -1 18 5 0.0000 4 60 45 2363 4916 5\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2363 3296 3\001 -6 6 1440 4815 1620 4995 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1508 4883 68 68 1575 4883 1440 4883 -4 1 0 50 -1 18 5 0.0000 4 60 90 1508 4916 19\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1508 4916 19\001 -6 6 1800 3960 1980 4140 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1868 4028 68 68 1935 4028 1800 4028 -4 1 0 50 -1 18 5 0.0000 4 60 90 1868 4061 18\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1868 4061 18\001 -6 6 4275 1980 4410 2115 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 2048 68 68 4410 2048 4275 2048 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 2081 5\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 2081 5\001 -6 6 4275 2340 4410 2475 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 2408 68 68 4410 2408 4275 2408 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 2441 6\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 2441 6\001 -6 6 4275 2520 4410 2655 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 2588 68 68 4410 2588 4275 2588 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 2621 7\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 2621 7\001 -6 6 4275 2700 4410 2835 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 2768 68 68 4410 2768 4275 2768 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 2801 8\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 2801 8\001 -6 6 4275 2880 4410 3015 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 2948 68 68 4410 2948 4275 2948 -4 1 0 50 -1 18 5 0.0000 4 60 45 4343 2981 9\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 4343 2981 9\001 -6 6 4275 3060 4410 3195 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 3128 68 68 4410 3128 4275 3128 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 3161 10\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 3161 10\001 -6 6 4275 3240 4410 3375 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 3308 68 68 4410 3308 4275 3308 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 3341 11\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 3341 11\001 -6 6 4275 3420 4410 3555 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 3488 68 68 4410 3488 4275 3488 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 3521 12\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 3521 12\001 -6 6 4275 3600 4410 3735 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 3668 68 68 4410 3668 4275 3668 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 3701 13\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 3701 13\001 -6 6 4275 3960 4410 4095 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 4028 68 68 4410 4028 4275 4028 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 4061 15\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 4061 15\001 -6 6 4275 4140 4410 4275 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 4208 68 68 4410 4208 4275 4208 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 4241 16\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 4241 16\001 -6 6 4275 4320 4410 4455 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 4388 68 68 4410 4388 4275 4388 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 4421 17\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 4421 17\001 -6 6 4275 3780 4455 3960 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 3848 68 68 4410 3848 4275 3848 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 3881 14\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 3881 14\001 -6 6 4275 4590 4455 4770 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 4658 68 68 4410 4658 4275 4658 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 4691 18\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 4691 18\001 -6 6 4275 4770 4455 4950 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 4838 68 68 4410 4838 4275 4838 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 4871 19\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 4871 19\001 -6 6 4275 4950 4455 5130 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 5018 68 68 4410 5018 4275 5018 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 5051 20\001 --6 -6 2295 5670 2475 5850 -1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 5738 68 68 2430 5738 2295 5738 -4 1 0 50 -1 18 5 0.0000 4 60 90 2363 5771 20\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 5051 20\001 -6 6 1170 3690 1350 3870 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1238 3758 68 68 1305 3758 1170 3758 -4 1 0 50 -1 18 5 0.0000 4 60 90 1238 3791 11\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1238 3791 11\001 -6 6 1530 3555 1710 3735 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 1598 3623 68 68 1665 3623 1530 3623 -4 1 0 50 -1 18 5 0.0000 4 60 90 1598 3656 10\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 1598 3656 10\001 -6 6 720 4095 900 4275 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 788 4163 68 68 855 4163 720 4163 -4 1 0 50 -1 18 5 0.0000 4 60 90 788 4196 14\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 788 4196 14\001 -6 6 855 3645 1035 3825 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 923 3713 68 68 990 3713 855 3713 -4 1 0 50 -1 18 5 0.0000 4 60 90 923 3746 21\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 923 3746 21\001 -6 6 4275 5130 4455 5310 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 5198 68 68 4410 5198 4275 5198 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 5231 21\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 5231 21\001 -6 6 2295 4140 2430 4275 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 4208 68 68 2430 4208 2295 4208 -4 1 0 50 -1 18 5 0.0000 4 60 45 2363 4241 4\001 +4 1 0 50 -1 18 5 0.0000 4 60 60 2363 4241 4\001 -6 6 2475 3870 2655 4050 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2543 3938 68 68 2610 3938 2475 3938 -4 1 0 50 -1 18 5 0.0000 4 60 90 2543 3971 22\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 2543 3971 22\001 -6 6 4275 5310 4455 5490 1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 4343 5378 68 68 4410 5378 4275 5378 -4 1 0 50 -1 18 5 0.0000 4 60 90 4343 5411 22\001 +4 1 0 50 -1 18 5 0.0000 4 60 120 4343 5411 22\001 +-6 +6 2295 5625 2430 5760 +1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 5693 68 68 2430 5693 2295 5693 +4 1 0 50 -1 18 5 0.0000 4 60 60 2363 5726 5\001 +-6 +6 2295 6480 2475 6660 +1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2363 6548 68 68 2430 6548 2295 6548 +4 1 0 50 -1 18 5 0.0000 4 60 120 2363 6581 20\001 -6 1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 1350 4612 225 112 1125 4612 1575 4612 -1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 2250 5422 225 112 2025 5422 2475 5422 1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 2250 1912 225 112 2025 1912 2475 1912 1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 1125 3487 225 112 900 3487 1350 3487 1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 3712 225 112 2025 3712 2475 3712 -1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 4612 225 112 2025 4612 2475 4612 -1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 6187 225 112 2025 6187 2475 6187 1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 2250 2812 225 112 2025 2812 2475 2812 1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 3375 2362 225 112 3150 2362 3600 2362 1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 1012 225 112 2025 1012 2475 1012 +1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 2250 6232 225 112 2025 6232 2475 6232 +1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 5422 225 112 2025 5422 2475 5422 +1 2 0 1 0 7 50 -1 20 0.000 1 0.0000 2250 6997 225 112 2025 6997 2475 6997 +1 2 0 1 0 6 50 -1 20 0.000 1 0.0000 2250 4587 225 112 2025 4587 2475 4587 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 60.00 120.00 2250 1125 2250 1800 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2250 4725 2250 5310 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2250 5535 2250 6075 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8550 5805 4500 5805 + 8910 5805 4500 5805 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 6885 5900 6930 5990 6975 5810 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 7605 5890 7650 5980 7695 5800 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8550 6030 4500 6030 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8550 6255 4500 6255 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8550 6480 4500 6480 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 6885 6570 6930 6660 6975 6480 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 7605 6570 7650 6660 7695 6480 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 7965 6570 8010 6660 8055 6480 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 5310 5589 5310 6921 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 @@ -233,22 +216,130 @@ Single 6750 5589 6750 6921 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 7110 5589 7110 6921 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 7470 5589 7470 6921 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 7830 5589 7830 6921 2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 4950 5589 4950 6921 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8190 5589 8190 6921 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4500 5580 8550 5580 8550 6930 4500 6930 4500 5580 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 8550 6705 4500 6705 -3 0 0 1 0 7 50 -1 -1 0.000 0 1 0 4 + 8910 6705 4500 6705 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 60.00 120.00 - 2475 2835 3150 3375 3150 5625 2475 6120 - 0.000 1.000 1.000 0.000 + 2250 5535 2250 6120 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 2250 6345 2250 6885 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4500 5580 8910 5580 8910 6930 4500 6930 4500 5580 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4500 5580 8910 5580 8910 6930 4500 6930 4500 5580 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8910 6030 4500 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8910 6255 4500 6255 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8910 6480 4500 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5310 5589 5310 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5670 5589 5670 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6030 5589 6030 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6390 5589 6390 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 5589 6750 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7110 5589 7110 6921 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4950 5589 4950 6921 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4500 5580 8910 5580 8910 6930 4500 6930 4500 5580 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 5805 4500 5805 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6030 4500 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6255 4500 6255 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6480 4500 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5310 5589 5310 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5670 5589 5670 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6030 5589 6030 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6390 5589 6390 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 5589 6750 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7110 5589 7110 6921 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4950 5589 4950 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6705 4500 6705 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 5805 4500 5805 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6030 4500 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6255 4500 6255 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6480 4500 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5310 5589 5310 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5670 5589 5670 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6030 5589 6030 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6390 5589 6390 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 5589 6750 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7110 5589 7110 6921 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4950 5589 4950 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8865 6705 4500 6705 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7605 5890 7650 5980 7695 5800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7605 6570 7650 6660 7695 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7470 5589 7470 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7965 5890 8010 5980 8055 5800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7965 6570 8010 6660 8055 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7830 5589 7830 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8325 6570 8370 6660 8415 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8190 5589 8190 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8550 5589 8550 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8190 5589 8190 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8550 5589 8550 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8190 5589 8190 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8550 5589 8550 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8190 5589 8190 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 8550 5589 8550 6921 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 + 4500 5805 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 + 4500 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 + 4500 6255 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 + 4500 6480 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 + 4500 6705 3 0 0 1 0 7 50 -1 -1 0.000 0 1 0 4 1 1 1.00 60.00 120.00 2250 2700 2475 2475 2475 2250 2250 2025 @@ -322,109 +413,123 @@ Single 1 1 1.00 60.00 120.00 2340 3825 2385 4005 2925 4275 2655 4815 2295 5310 0.000 1.000 1.000 1.000 0.000 -4 0 0 50 -1 14 6 0.0000 4 75 2880 4500 1710 ASS-CON: ssui(): connect_server() == SN_ERR_NONE\001 -4 0 0 50 -1 14 6 0.0000 4 60 540 4500 1350 INI-REQ: \001 -4 0 0 50 -1 14 6 0.0000 4 75 3720 4500 1530 REQ-ASS: prepare_conn_request(): srv_redispatch_connect() == 0\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2475 2700 4\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 1620 4500 6\001 -4 0 0 50 -1 14 6 0.0000 4 75 3360 4500 1890 CON-EST: sess_update_st_con_tcp(): !timeout && !conn_err\001 -4 0 0 50 -1 14 6 0.0000 4 75 2460 4500 3510 TAR-ASS: ssui(): SI_FL_EXP && SN_ASSIGNED\001 -4 0 0 50 -1 14 6 0.0000 4 75 3420 4500 2970 ASS-REQ: connect_server: conn_retries == 0 && PR_O_REDISP\001 -4 0 0 50 -1 14 6 0.0000 4 75 2460 4500 2610 QUE-REQ: ssui(): !pend_pos && SN_ASSIGNED\001 -4 0 0 50 -1 14 6 0.0000 4 75 2520 4500 2790 QUE-REQ: ssui(): !pend_pos && !SN_ASSIGNED\001 -4 0 0 50 -1 14 6 0.0000 4 75 3300 4500 4230 QUE-CLO: ssui(): pend_pos && (SI_FL_EXP || req_aborted)\001 -4 0 0 50 -1 14 6 0.0000 4 75 2520 4500 3690 TAR-REQ: ssui(): SI_FL_EXP && !SN_ASSIGNED\001 -4 0 0 50 -1 14 6 0.0000 4 75 3960 4500 4545 ASS-CLO: PR_O_REDISP && SN_REDIRECTABLE && perform_http_redirect()\001 -4 0 0 50 -1 14 6 0.0000 4 75 4440 4500 2430 REQ-QUE: prepare_conn_request(): srv_redispatch_connect() != 0 (SI_ST_QUE)\001 -4 0 0 50 -1 14 6 0.0000 4 75 4200 4500 4050 REQ-CLO: prepare_conn_request(): srv_redispatch_connect() != 0 (error)\001 -4 0 0 50 -1 14 6 0.0000 4 75 4320 4500 4410 ASS-CLO: ssui(): connect_server() == SN_ERR_INTERNAL || conn_retries < 0\001 -4 0 0 50 -1 14 6 0.0000 4 75 3120 4500 4680 CON-CER: sess_update_st_con_tcp(): timeout/SI_FL_ERR\001 -4 0 0 50 -1 14 6 0.0000 4 75 3600 4500 4860 CER-CLO: sess_update_st_cer(): (ERR/EXP) && conn_retries < 0\001 -4 0 0 50 -1 14 6 0.0000 4 75 4200 4500 3870 CER-REQ: sess_update_st_cer(): timeout && !conn_retries && PR_O_REDISP\001 -4 0 0 50 -1 14 6 0.0000 4 75 3600 4500 3330 CER-TAR: sess_update_st_cer(): conn_err && conn_retries >= 0\001 -4 0 0 50 -1 14 6 0.0000 4 75 4620 4500 3150 CER-ASS: sess_update_st_cer(): timeout && (conn_retries >= 0 || !PR_O_REDISP)\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 1305 3375 3\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2430 4500 7\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2430 3600 5\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 3555 2250 2\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2430 1800 1\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2430 900 0\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2430 5310 8\001 -4 0 0 50 -1 14 6 0.0000 4 75 3000 4500 2070 EST-DIS: stream_sock_read/write/shutr/shutw: close\001 -4 0 0 50 -1 14 6 0.0000 4 75 1980 4500 2250 EST-DIS: process_session(): error\001 -4 0 0 50 -1 14 6 0.0000 4 75 2100 4500 5040 DIS-CLO: process_session(): cleanup\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 5490 DIS\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 1350 4680 CER\001 -4 1 0 50 -1 14 10 0.0000 4 105 270 2250 1980 REQ\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 1125 3555 TAR\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 2880 ASS\001 -4 1 0 50 -1 14 10 0.0000 4 105 270 3375 2430 QUE\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 3780 CON\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 4680 EST\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 6255 CLO\001 -4 1 0 50 -1 14 10 0.0000 4 90 270 2250 1080 INI\001 -4 0 0 50 -1 14 6 0.0000 4 75 2820 4500 5220 TAR-CLO: sess_update_stream_int(): client abort\001 -4 0 4 50 -1 14 10 0.0000 4 90 90 2385 6075 9\001 -4 0 0 50 -1 14 6 0.0000 4 75 2820 4500 5400 CON-DIS: sess_update_st_con_tcp(): client abort\001 +3 0 0 1 0 7 50 -1 -1 0.000 0 1 0 4 + 1 1 1.00 60.00 120.00 + 2475 2835 3150 3375 3150 5625 2475 6120 + 0.000 1.000 1.000 0.000 +3 0 0 1 0 7 50 -1 -1 0.000 0 1 0 2 + 1 1 1.00 60.00 120.00 + 2250 4725 2250 5310 + 0.000 0.000 +4 0 0 50 -1 14 6 0.0000 4 105 2880 4500 1710 ASS-CON: ssui(): connect_server() == SN_ERR_NONE\001 +4 0 0 50 -1 14 6 0.0000 4 90 540 4500 1350 INI-REQ: \001 +4 0 0 50 -1 14 6 0.0000 4 120 3720 4500 1530 REQ-ASS: prepare_conn_request(): srv_redispatch_connect() == 0\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2475 2700 4\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 1620 4500 6\001 +4 0 0 50 -1 14 6 0.0000 4 120 3360 4500 1890 CON-EST: sess_update_st_con_tcp(): !timeout && !conn_err\001 +4 0 0 50 -1 14 6 0.0000 4 105 2460 4500 3510 TAR-ASS: ssui(): SI_FL_EXP && SN_ASSIGNED\001 +4 0 0 50 -1 14 6 0.0000 4 105 3420 4500 2970 ASS-REQ: connect_server: conn_retries == 0 && PR_O_REDISP\001 +4 0 0 50 -1 14 6 0.0000 4 120 2460 4500 2610 QUE-REQ: ssui(): !pend_pos && SN_ASSIGNED\001 +4 0 0 50 -1 14 6 0.0000 4 120 2520 4500 2790 QUE-REQ: ssui(): !pend_pos && !SN_ASSIGNED\001 +4 0 0 50 -1 14 6 0.0000 4 120 3300 4500 4230 QUE-CLO: ssui(): pend_pos && (SI_FL_EXP || req_aborted)\001 +4 0 0 50 -1 14 6 0.0000 4 105 2520 4500 3690 TAR-REQ: ssui(): SI_FL_EXP && !SN_ASSIGNED\001 +4 0 0 50 -1 14 6 0.0000 4 120 3960 4500 4545 ASS-CLO: PR_O_REDISP && SN_REDIRECTABLE && perform_http_redirect()\001 +4 0 0 50 -1 14 6 0.0000 4 120 4440 4500 2430 REQ-QUE: prepare_conn_request(): srv_redispatch_connect() != 0 (SI_ST_QUE)\001 +4 0 0 50 -1 14 6 0.0000 4 120 4200 4500 4050 REQ-CLO: prepare_conn_request(): srv_redispatch_connect() != 0 (error)\001 +4 0 0 50 -1 14 6 0.0000 4 105 4320 4500 4410 ASS-CLO: ssui(): connect_server() == SN_ERR_INTERNAL || conn_retries < 0\001 +4 0 0 50 -1 14 6 0.0000 4 120 3120 4500 4680 CON-CER: sess_update_st_con_tcp(): timeout/SI_FL_ERR\001 +4 0 0 50 -1 14 6 0.0000 4 120 3600 4500 4860 CER-CLO: sess_update_st_cer(): (ERR/EXP) && conn_retries < 0\001 +4 0 0 50 -1 14 6 0.0000 4 120 4200 4500 3870 CER-REQ: sess_update_st_cer(): timeout && !conn_retries && PR_O_REDISP\001 +4 0 0 50 -1 14 6 0.0000 4 120 3600 4500 3330 CER-TAR: sess_update_st_cer(): conn_err && conn_retries >= 0\001 +4 0 0 50 -1 14 6 0.0000 4 120 4620 4500 3150 CER-ASS: sess_update_st_cer(): timeout && (conn_retries >= 0 || !PR_O_REDISP)\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 1305 3375 3\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2430 3600 5\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 3555 2250 2\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2430 1800 1\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2430 900 0\001 +4 0 0 50 -1 14 6 0.0000 4 105 3000 4500 2070 EST-DIS: stream_sock_read/write/shutr/shutw: close\001 +4 0 0 50 -1 14 6 0.0000 4 120 1980 4500 2250 EST-DIS: process_session(): error\001 +4 0 0 50 -1 14 6 0.0000 4 120 2100 4500 5040 DIS-CLO: process_session(): cleanup\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 1350 4680 CER\001 +4 1 0 50 -1 14 10 0.0000 4 135 315 2250 1980 REQ\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 1125 3555 TAR\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 2880 ASS\001 +4 1 0 50 -1 14 10 0.0000 4 135 315 3375 2430 QUE\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 3780 CON\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 1080 INI\001 +4 0 0 50 -1 14 6 0.0000 4 120 2820 4500 5220 TAR-CLO: sess_update_stream_int(): client abort\001 +4 0 0 50 -1 14 6 0.0000 4 120 2820 4500 5400 CON-DIS: sess_update_st_con_tcp(): client abort\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5130 5985 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5490 5985 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5850 5985 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 6210 5985 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 6570 5985 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 7290 5985 -\001 -4 1 0 50 -1 14 8 0.0000 4 15 75 8010 5985 -\001 -4 1 0 50 -1 16 7 0.0000 4 75 90 4725 5985 fd\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 5130 5760 INI\001 -4 1 0 50 -1 16 7 0.0000 4 75 240 4725 5760 state\001 -4 1 0 50 -1 14 8 0.0000 4 90 225 5490 5760 REQ\001 -4 1 0 50 -1 14 8 0.0000 4 90 225 5850 5760 QUE\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 6210 5760 TAR\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 6570 5760 ASS\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 6930 5760 CON\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 7290 5760 CER\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 7650 5760 EST\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8010 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5850 6210 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5130 6210 0\001 -4 1 0 50 -1 16 7 0.0000 4 75 225 4725 6210 ERR\001 -4 1 0 50 -1 16 7 0.0000 4 75 225 4725 6435 EXP\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8010 6435 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5490 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6210 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6570 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6570 6435 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5490 6435 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5130 6435 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5850 6435 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6210 6435 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 7290 6435 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6930 6435 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 7290 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6930 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 7650 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 7650 6435 X\001 -4 1 0 50 -1 16 7 0.0000 4 60 240 4725 6660 sess\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 8370 5760 CLO\001 -4 1 0 50 -1 14 8 0.0000 4 75 225 8010 5760 DIS\001 -4 1 0 50 -1 14 8 0.0000 4 15 75 8370 5985 -\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8370 6210 X\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8370 6435 X\001 +4 1 0 50 -1 16 7 0.0000 4 105 120 4725 5985 fd\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 5130 5760 INI\001 +4 1 0 50 -1 16 7 0.0000 4 105 270 4725 5760 state\001 +4 1 0 50 -1 14 8 0.0000 4 120 225 5490 5760 REQ\001 +4 1 0 50 -1 14 8 0.0000 4 120 225 5850 5760 QUE\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 6210 5760 TAR\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 6570 5760 ASS\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 6930 5760 CON\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 7290 5760 CER\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5850 6210 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5130 6210 0\001 +4 1 0 50 -1 16 7 0.0000 4 90 270 4725 6210 ERR\001 +4 1 0 50 -1 16 7 0.0000 4 90 270 4725 6435 EXP\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5490 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6210 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6570 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6570 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5490 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5130 6435 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5850 6435 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6210 6435 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 7290 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6930 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 7290 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6930 6210 X\001 +4 1 0 50 -1 16 7 0.0000 4 75 240 4725 6660 sess\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5130 6660 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5490 6660 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 5850 6660 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 6210 6660 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 6570 6660 -\001 4 1 0 50 -1 14 8 0.0000 4 15 75 7290 6660 -\001 -4 1 0 50 -1 14 8 0.0000 4 15 75 8370 6660 -\001 -4 0 0 50 -1 16 6 0.0000 4 90 5010 675 7335 Note: states painted yellow above are transient ; process_session() will never leave a stream interface in any of those upon return.\001 -4 1 0 50 -1 16 7 0.0000 4 75 285 4725 6840 SHUT\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 7650 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8010 6840 1\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 8370 6840 1\001 +4 0 0 50 -1 16 6 0.0000 4 120 5970 675 7335 Note: states painted yellow above are transient ; process_session() will never leave a stream interface in any of those upon return.\001 +4 1 0 50 -1 16 7 0.0000 4 90 330 4725 6840 SHUT\001 4 1 0 50 -1 14 8 0.0000 4 15 75 7290 6840 -\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6930 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6570 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 6210 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5850 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5490 6840 0\001 -4 1 0 50 -1 14 8 0.0000 4 75 75 5130 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6930 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6570 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 6210 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5850 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5490 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 5130 6840 0\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 6300 DIS\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 5490 EST\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 7065 CLO\001 +4 1 0 50 -1 14 10 0.0000 4 105 315 2250 4635 RDY\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2430 4455 7\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2430 5310 8\001 +4 0 4 50 -1 14 10 0.0000 4 105 105 2385 6120 9\001 +4 0 4 50 -1 14 10 0.0000 4 105 210 2385 6840 10\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 7650 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 7650 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 7650 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 8010 5760 EST\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8010 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8010 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8010 6840 0\001 +4 1 0 50 -1 14 8 0.0000 4 15 75 8370 5985 -\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8370 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8370 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 8730 5760 CLO\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 8370 5760 DIS\001 +4 1 0 50 -1 14 8 0.0000 4 15 75 8730 5985 -\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8730 6210 X\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8730 6435 X\001 +4 1 0 50 -1 14 8 0.0000 4 15 75 8730 6660 -\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8370 6840 1\001 +4 1 0 50 -1 14 8 0.0000 4 90 75 8730 6840 1\001 +4 1 0 50 -1 14 8 0.0000 4 90 225 7650 5760 RDY\001 diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index 59b5c15ad..17a0c7461 100644 --- a/include/proto/stream_interface.h +++ b/include/proto/stream_interface.h @@ -448,13 +448,13 @@ static inline void si_must_kill_conn(struct stream_interface *si) */ static inline void si_chk_rcv(struct stream_interface *si) { - if (si->flags & SI_FL_RXBLK_CONN && si_state_in(si_opposite(si)->state, SI_SB_EST|SI_SB_DIS|SI_SB_CLO)) + if (si->flags & SI_FL_RXBLK_CONN && si_state_in(si_opposite(si)->state, SI_SB_RDY|SI_SB_EST|SI_SB_DIS|SI_SB_CLO)) si_rx_conn_rdy(si); if (si_rx_blocked(si) || !si_rx_endp_ready(si)) return; - if (!si_state_in(si->state, SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_RDY|SI_SB_EST)) return; si->flags |= SI_FL_RX_WAIT_EP; @@ -472,7 +472,7 @@ static inline int si_sync_recv(struct stream_interface *si) { struct conn_stream *cs; - if (!si_state_in(si->state, SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_RDY|SI_SB_EST)) return 0; cs = objt_cs(si->end); @@ -552,6 +552,7 @@ static inline const char *si_state_str(int state) case SI_ST_ASS: return "ASS"; case SI_ST_CON: return "CON"; case SI_ST_CER: return "CER"; + case SI_ST_RDY: return "RDY"; case SI_ST_EST: return "EST"; case SI_ST_DIS: return "DIS"; case SI_ST_CLO: return "CLO"; diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index 86df1d269..e45eb6f17 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -38,6 +38,7 @@ enum si_state { SI_ST_ASS, /* server just assigned to this interface */ SI_ST_CON, /* initiated connection request (resource exists) */ SI_ST_CER, /* [transient] previous connection attempt failed (resource released) */ + SI_ST_RDY, /* [transient] ready proven after I/O success during SI_ST_CON */ SI_ST_EST, /* connection established (resource exists) */ SI_ST_DIS, /* [transient] disconnected from other side, but cleanup not done yet */ SI_ST_CLO, /* stream intf closed, might not existing anymore. Buffers shut. */ @@ -53,10 +54,11 @@ enum si_state_bit { SI_SB_ASS = 1U << SI_ST_ASS, SI_SB_CON = 1U << SI_ST_CON, SI_SB_CER = 1U << SI_ST_CER, + SI_SB_RDY = 1U << SI_ST_RDY, SI_SB_EST = 1U << SI_ST_EST, SI_SB_DIS = 1U << SI_ST_DIS, SI_SB_CLO = 1U << SI_ST_CLO, - SI_SB_ALL = SI_SB_INI|SI_SB_REQ|SI_SB_QUE|SI_SB_TAR|SI_SB_ASS|SI_SB_CON|SI_SB_CER|SI_SB_EST|SI_SB_DIS|SI_SB_CLO, + SI_SB_ALL = SI_SB_INI|SI_SB_REQ|SI_SB_QUE|SI_SB_TAR|SI_SB_ASS|SI_SB_CON|SI_SB_CER|SI_SB_RDY|SI_SB_EST|SI_SB_DIS|SI_SB_CLO, }; /* error types reported on the streams interface for more accurate reporting */ diff --git a/src/flt_spoe.c b/src/flt_spoe.c index 764e9babf..711ac809e 100644 --- a/src/flt_spoe.c +++ b/src/flt_spoe.c @@ -1347,7 +1347,7 @@ spoe_handle_connect_appctx(struct appctx *appctx) goto exit; } - if (!si_state_in(si->state, SI_SB_EST)) { + if (!si_state_in(si->state, SI_SB_RDY|SI_SB_EST)) { /* not connected yet */ si_rx_endp_more(si); task_wakeup(si_strm(si)->task, TASK_WOKEN_MSG); diff --git a/src/stream.c b/src/stream.c index a5997e546..132a159ef 100644 --- a/src/stream.c +++ b/src/stream.c @@ -649,7 +649,7 @@ void stream_process_counters(struct stream *s) } } -/* This function is called with (si->state == SI_ST_CON) meaning that a +/* This function is called with (si->state == SI_ST_CON|SI_ST_RDY) meaning that a * connection was attempted and that the file descriptor is already allocated. * We must check for establishment, error and abort. Possible output states * are SI_ST_EST (established), SI_ST_CER (error), SI_ST_DIS (abort), and @@ -880,7 +880,7 @@ static int sess_update_st_cer(struct stream *s) /* * This function handles the transition between the SI_ST_CON state and the * SI_ST_EST state. It must only be called after switching from SI_ST_CON (or - * SI_ST_INI) to SI_ST_EST, but only when a ->proto is defined. + * SI_ST_INI or SI_ST_RDY) to SI_ST_EST, but only when a ->proto is defined. * Note that it will switch the interface to SI_ST_DIS if we already have * the CF_SHUTR flag, it means we were able to forward the request, and * receive the response, before process_stream() had the opportunity to @@ -1148,7 +1148,7 @@ static void sess_set_term_flags(struct stream *s) } else if (s->si[1].state == SI_ST_QUE) s->flags |= SF_FINST_Q; - else if (si_state_in(s->si[1].state, SI_SB_REQ|SI_SB_TAR|SI_SB_ASS|SI_SB_CON|SI_SB_CER)) + else if (si_state_in(s->si[1].state, SI_SB_REQ|SI_SB_TAR|SI_SB_ASS|SI_SB_CON|SI_SB_CER|SI_SB_RDY)) s->flags |= SF_FINST_C; else if (s->si[1].state == SI_ST_EST || s->si[1].prev_state == SI_ST_EST) s->flags |= SF_FINST_D; @@ -1945,7 +1945,7 @@ redo: /* note: maybe we should process connection errors here ? */ } - if (si_state_in(si_b->state, SI_SB_CON)) { + if (si_state_in(si_b->state, SI_SB_CON|SI_SB_RDY)) { /* we were trying to establish a connection on the server side, * maybe it succeeded, maybe it failed, maybe we timed out, ... */ @@ -2428,7 +2428,7 @@ redo: /* Now we can add the server name to a header (if requested) */ /* check for HTTP mode and proxy server_name_hdr_name != NULL */ - if (si_state_in(si_b->state, SI_SB_CON|SI_SB_EST) && + if (si_state_in(si_b->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST) && (s->be->server_id_hdr_name != NULL) && (s->be->mode == PR_MODE_HTTP) && objt_server(s->target)) { diff --git a/src/stream_interface.c b/src/stream_interface.c index 0a00b165a..626c8540f 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -175,7 +175,7 @@ static void stream_int_shutr(struct stream_interface *si) ic->flags |= CF_SHUTR; ic->rex = TICK_ETERNITY; - if (!si_state_in(si->state, SI_SB_CON|SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST)) return; if (si_oc(si)->flags & CF_SHUTW) { @@ -217,6 +217,7 @@ static void stream_int_shutw(struct stream_interface *si) } switch (si->state) { + case SI_ST_RDY: case SI_ST_EST: /* we have to shut before closing, otherwise some short messages * may never leave the system, especially when there are remaining @@ -541,7 +542,7 @@ static void stream_int_notify(struct stream_interface *si) /* wake the task up only when needed */ if (/* changes on the production side */ (ic->flags & (CF_READ_NULL|CF_READ_ERROR)) || - !si_state_in(si->state, SI_SB_CON|SI_SB_EST) || + !si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST) || (si->flags & SI_FL_ERR) || ((ic->flags & CF_READ_PARTIAL) && ((ic->flags & CF_EOI) || !ic->to_forward || sio->state != SI_ST_EST)) || @@ -893,7 +894,7 @@ void si_update_both(struct stream_interface *si_f, struct stream_interface *si_b /* back stream-int */ cs = objt_cs(si_b->end); if (cs && - si_state_in(si_b->state, SI_SB_CON|SI_SB_EST) && + si_state_in(si_b->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST) && !(req->flags & CF_SHUTW) && /* Write not closed */ !channel_is_empty(req) && !(cs->flags & (CS_FL_ERROR|CS_FL_ERR_PENDING)) && @@ -903,10 +904,10 @@ void si_update_both(struct stream_interface *si_f, struct stream_interface *si_b } /* let's recompute both sides states */ - if (si_state_in(si_f->state, SI_SB_EST)) + if (si_state_in(si_f->state, SI_SB_RDY|SI_SB_EST)) si_update(si_f); - if (si_state_in(si_b->state, SI_SB_EST)) + if (si_state_in(si_b->state, SI_SB_RDY|SI_SB_EST)) si_update(si_b); /* stream ints are processed outside of process_stream() and must be @@ -944,7 +945,7 @@ static void stream_int_shutr_conn(struct stream_interface *si) ic->flags |= CF_SHUTR; ic->rex = TICK_ETERNITY; - if (!si_state_in(si->state, SI_SB_CON|SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST)) return; if (si->flags & SI_FL_KILL_CONN) @@ -989,6 +990,7 @@ static void stream_int_shutw_conn(struct stream_interface *si) } switch (si->state) { + case SI_ST_RDY: case SI_ST_EST: /* we have to shut before closing, otherwise some short messages * may never leave the system, especially when there are remaining @@ -1060,7 +1062,7 @@ static void stream_int_shutw_conn(struct stream_interface *si) static void stream_int_chk_rcv_conn(struct stream_interface *si) { /* (re)start reading */ - if (si_state_in(si->state, SI_SB_CON|SI_SB_EST)) + if (si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST)) tasklet_wakeup(si->wait_event.task); } @@ -1075,7 +1077,7 @@ static void stream_int_chk_snd_conn(struct stream_interface *si) struct channel *oc = si_oc(si); struct conn_stream *cs = __objt_cs(si->end); - if (unlikely(!si_state_in(si->state, SI_SB_CON|SI_SB_EST) || + if (unlikely(!si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST) || (oc->flags & CF_SHUTW))) return; @@ -1106,7 +1108,7 @@ static void stream_int_chk_snd_conn(struct stream_interface *si) */ if (((oc->flags & (CF_SHUTW|CF_AUTO_CLOSE|CF_SHUTW_NOW)) == (CF_AUTO_CLOSE|CF_SHUTW_NOW)) && - si_state_in(si->state, SI_SB_EST)) { + si_state_in(si->state, SI_SB_RDY|SI_SB_EST)) { si_shutw(si); goto out_wakeup; } @@ -1471,7 +1473,7 @@ static void stream_int_read0(struct stream_interface *si) ic->flags |= CF_SHUTR; ic->rex = TICK_ETERNITY; - if (!si_state_in(si->state, SI_SB_CON|SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST)) return; if (oc->flags & CF_SHUTW) @@ -1561,7 +1563,7 @@ static void stream_int_shutr_applet(struct stream_interface *si) /* Note: on shutr, we don't call the applet */ - if (!si_state_in(si->state, SI_SB_CON|SI_SB_EST)) + if (!si_state_in(si->state, SI_SB_CON|SI_SB_RDY|SI_SB_EST)) return; if (si_oc(si)->flags & CF_SHUTW) { @@ -1603,6 +1605,7 @@ static void stream_int_shutw_applet(struct stream_interface *si) appctx_wakeup(si_appctx(si)); switch (si->state) { + case SI_ST_RDY: case SI_ST_EST: /* we have to shut before closing, otherwise some short messages * may never leave the system, especially when there are remaining