CO_FL_WAIT_L6_CONN = 0x00800000, /* waiting for L6 to be connected (eg: SSL) */
CO_FL_WAIT_L4L6 = 0x00C00000, /* waiting for L4 and/or L6 to be connected */
- /*** All the flags below are used for connection handshakes. Any new
+ /* All the flags below are used for connection handshakes. Any new
* handshake should be added after this point, and CO_FL_HANDSHAKE
* should be updated.
*/
CO_FL_SEND_PROXY = 0x01000000, /* send a valid PROXY protocol header */
- CO_FL_SSL_WAIT_HS = 0x02000000, /* wait for an SSL handshake to complete */
- CO_FL_ACCEPT_PROXY = 0x04000000, /* receive a valid PROXY protocol header */
- CO_FL_ACCEPT_CIP = 0x08000000, /* receive a valid NetScaler Client IP header */
+ CO_FL_ACCEPT_PROXY = 0x02000000, /* receive a valid PROXY protocol header */
+ CO_FL_ACCEPT_CIP = 0x04000000, /* receive a valid NetScaler Client IP header */
/* below we have all handshake flags grouped into one */
- CO_FL_HANDSHAKE = CO_FL_SEND_PROXY | CO_FL_SSL_WAIT_HS | CO_FL_ACCEPT_PROXY | CO_FL_ACCEPT_CIP | CO_FL_SOCKS4_SEND | CO_FL_SOCKS4_RECV,
- CO_FL_HANDSHAKE_NOSSL = CO_FL_SEND_PROXY | CO_FL_ACCEPT_PROXY | CO_FL_ACCEPT_CIP | CO_FL_SOCKS4_SEND | CO_FL_SOCKS4_RECV,
+ CO_FL_HANDSHAKE = CO_FL_SEND_PROXY | CO_FL_ACCEPT_PROXY | CO_FL_ACCEPT_CIP | CO_FL_SOCKS4_SEND | CO_FL_SOCKS4_RECV,
+
+ CO_FL_SSL_WAIT_HS = 0x08000000, /* wait for an SSL handshake to complete */
/* This connection may not be shared between clients */
CO_FL_PRIVATE = 0x10000000,
/* The CO_FL_SEND_PROXY flag may have been set by the connect method,
* if so, add our handshake pseudo-XPRT now.
*/
- if ((srv_conn->flags & CO_FL_HANDSHAKE_NOSSL)) {
+ if ((srv_conn->flags & CO_FL_HANDSHAKE)) {
if (xprt_add_hs(srv_conn) < 0) {
conn_full_close(srv_conn);
return SF_ERR_INTERNAL;
}
#endif
- if (conn->flags & CO_FL_HANDSHAKE)
+ if (conn->flags & (CO_FL_HANDSHAKE | CO_FL_SSL_WAIT_HS))
/* a handshake was requested */
return 0;
if (!ctx)
goto out_error;
- if (conn->flags & (CO_FL_HANDSHAKE | CO_FL_EARLY_SSL_HS))
+ if (conn->flags & (CO_FL_HANDSHAKE | CO_FL_SSL_WAIT_HS | CO_FL_EARLY_SSL_HS))
/* a handshake was requested */
return 0;
{
struct ssl_sock_ctx *ctx = xprt_ctx;
- if (conn->flags & CO_FL_HANDSHAKE)
+ if (conn->flags & (CO_FL_HANDSHAKE | CO_FL_SSL_WAIT_HS))
return;
if (!clean)
/* don't sent notify on SSL_shutdown */
goto end;
}
else if (rule->action == ACT_TCP_EXPECT_PX) {
- if (!(conn->flags & (CO_FL_HANDSHAKE_NOSSL))) {
+ if (!(conn->flags & CO_FL_HANDSHAKE)) {
if (xprt_add_hs(conn) < 0) {
result = 0;
goto end;
conn->flags |= CO_FL_ACCEPT_PROXY;
}
else if (rule->action == ACT_TCP_EXPECT_CIP) {
- if (!(conn->flags & (CO_FL_HANDSHAKE_NOSSL))) {
+ if (!(conn->flags & CO_FL_HANDSHAKE)) {
if (xprt_add_hs(conn) < 0) {
result = 0;
goto end;
* connection error
* */
if ((conn->flags & CO_FL_ERROR) ||
- !(conn->flags & CO_FL_HANDSHAKE_NOSSL)) {
+ !(conn->flags & CO_FL_HANDSHAKE)) {
int ret = 0;
int woke = 0;
int was_conn_ctx = 0;
* to fallback to the original XPRT to re-initiate the
* connection.
*/
- conn->flags &= ~CO_FL_HANDSHAKE_NOSSL;
+ conn->flags &= ~CO_FL_HANDSHAKE;
if (conn->xprt == xprt_get(XPRT_HANDSHAKE))
conn->xprt = xprt_get(XPRT_RAW);
tasklet_free(ctx->wait_event.tasklet);