MINOR: ssl_sock: make use of CO_FL_WILL_UPDATE
Now when ssl_sock_{to,from}_buf are called, if the connection doesn't
feature CO_FL_WILL_UPDATE, they will first retrieve the updated flags
using conn_refresh_polling_flags() before changing any flag, then call
conn_cond_update_sock_polling() before leaving, to commit such changes.
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 3afcd52..3d97239 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -4851,6 +4851,8 @@
int ret, done = 0;
int try;
+ conn_refresh_polling_flags(conn);
+
if (!conn->xprt_ctx)
goto out_error;
@@ -4936,18 +4938,20 @@
goto out_error;
}
}
+ leave:
+ conn_cond_update_sock_polling(conn);
return done;
read0:
conn_sock_read0(conn);
- return done;
+ goto leave;
out_error:
/* Clear openssl global errors stack */
ssl_sock_dump_errors(conn);
ERR_clear_error();
conn->flags |= CO_FL_ERROR;
- return done;
+ goto leave;
}
@@ -4966,6 +4970,7 @@
int ret, try, done;
done = 0;
+ conn_refresh_polling_flags(conn);
if (!conn->xprt_ctx)
goto out_error;
@@ -5043,6 +5048,8 @@
goto out_error;
}
}
+ leave:
+ conn_cond_update_sock_polling(conn);
return done;
out_error:
@@ -5051,7 +5058,7 @@
ERR_clear_error();
conn->flags |= CO_FL_ERROR;
- return done;
+ goto leave;
}
static void ssl_sock_close(struct connection *conn) {