Allow configuring compression level

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
This commit is contained in:
Steffen Jaeckel
2024-01-29 12:17:56 +01:00
committed by Steffen Jaeckel
parent 06f2ba19b4
commit 541c22cb13
4 changed files with 13 additions and 2 deletions

View File

@@ -280,7 +280,8 @@ struct _xmpp_conn_t {
struct {
struct xmpp_compression *state;
int allowed, supported, dont_reset;
int allowed, dont_reset, level;
int supported;
} compression;
char *lang;

View File

@@ -227,7 +227,7 @@ int compression_init(xmpp_conn_t *conn)
comp->compression.stream.next_out = comp->compression.buffer;
comp->compression.stream.avail_out = STROPHE_COMPRESSION_BUFFER_SIZE;
int ret = deflateInit(&comp->compression.stream, Z_DEFAULT_COMPRESSION);
int ret = deflateInit(&comp->compression.stream, conn->compression.level);
if (ret != Z_OK) {
strophe_free_and_null(conn->ctx, comp->compression.buffer);
conn->error = ret;

View File

@@ -167,6 +167,8 @@ xmpp_conn_t *xmpp_conn_new(xmpp_ctx_t *ctx)
tls_clear_password_cache(conn);
conn->password_retries = 1;
conn->compression.level = -1;
conn->parser =
parser_new(conn->ctx, _handle_stream_start, _handle_stream_end,
_handle_stream_stanza, conn);
@@ -348,6 +350,10 @@ int xmpp_conn_release(xmpp_conn_t *conn)
* In case the user enters the password manually it can be useful to
* directly retry if the decryption of the key file failed.
*
* - \ref XMPP_SETTING_COMPRESSION_LEVEL
* Set the compression level. \n
* For zlib the valid range is `-1` to `9`.
*
* @param conn a Strophe connection object
* @param setting The setting that shall be configured
* @param value The value, the settings should get
@@ -365,6 +371,9 @@ void xmpp_conn_set_int(xmpp_conn_t *conn,
else
conn->password_retries = value;
break;
case XMPP_SETTING_COMPRESSION_LEVEL:
conn->compression.level = value;
break;
default:
strophe_warn(conn->ctx, "xmpp", "Invalid Int setting %d", setting);
return;

View File

@@ -389,6 +389,7 @@ typedef enum xmpp_conn_setting_t {
/* Int values */
XMPP_SETTING_PASSWORD_RETRIES = 0x40, /**< Number of retry attempts to
decrypt a private key file. */
XMPP_SETTING_COMPRESSION_LEVEL, /**< Compression level. */
/* Pointer values */
XMPP_SETTING_PASSWORD_CALLBACK_USERDATA = 0x80, /**< Userdata for password