diff --git a/src/ssl_sample.c b/src/ssl_sample.c
index 0a78ecb..a18d66c 100644
--- a/src/ssl_sample.c
+++ b/src/ssl_sample.c
@@ -529,7 +529,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -584,7 +584,7 @@
 	int i;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -647,7 +647,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -700,7 +700,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -751,7 +751,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -803,7 +803,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -871,7 +871,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -923,7 +923,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -1020,7 +1020,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1065,7 +1065,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 
@@ -1122,7 +1122,7 @@
 	SSL *ssl;
 
 	if (conn_server)
-		conn = smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+		conn = smp->strm ? cs_conn(smp->strm->csb) : NULL;
 	else
 		conn = objt_conn(smp->sess->origin);
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1174,7 +1174,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->data.type = SMP_T_BOOL;
 	smp->data.u.sint = (conn && conn->xprt == &ssl_sock);
@@ -1211,7 +1211,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 
@@ -1234,7 +1234,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->flags = 0;
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1268,7 +1268,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->flags = 0;
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1299,7 +1299,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->flags = 0;
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1331,7 +1331,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 	if (!ssl)
@@ -1366,7 +1366,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 	if (!ssl)
@@ -1399,7 +1399,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->flags = 0;
 	ssl = ssl_sock_get_ssl_object(conn);
@@ -1437,7 +1437,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 	if (!ssl)
@@ -1469,7 +1469,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 	if (!ssl)
@@ -1506,7 +1506,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	ssl = ssl_sock_get_ssl_object(conn);
 	if (!ssl)
@@ -1655,7 +1655,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	if (!conn || conn->xprt != &ssl_sock)
 		return 0;
@@ -1708,7 +1708,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	if (!conn || conn->xprt != &ssl_sock)
 		return 0;
@@ -1841,7 +1841,7 @@
 	const char *sfx;
 
 	conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-	       smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+	       smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	if (!conn)
 		return 0;
@@ -1938,7 +1938,7 @@
 		conn = (kw[4] == 'b') ? cs_conn(__objt_check(smp->sess->origin)->cs) : NULL;
 	else
 		conn = (kw[4] != 'b') ? objt_conn(smp->sess->origin) :
-			smp->strm ? cs_conn(smp->strm->si[1].cs) : NULL;
+			smp->strm ? cs_conn(smp->strm->csb) : NULL;
 
 	smp->flags = 0;
 	ssl = ssl_sock_get_ssl_object(conn);
