Skip to content

Commit

Permalink
Allow configuring compression level
Browse files Browse the repository at this point in the history
Signed-off-by: Steffen Jaeckel <[email protected]>
  • Loading branch information
sjaeckel committed Jan 30, 2024
1 parent a70f9a4 commit 32f4871
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,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;
Expand Down
2 changes: 1 addition & 1 deletion src/compression.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,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 err = deflateInit(&comp->compression.stream, Z_DEFAULT_COMPRESSION);
int err = deflateInit(&comp->compression.stream, conn->compression.level);
if (err != Z_OK) {
strophe_free_and_null(conn->ctx, comp->compression.buffer);
conn->error = EBADFD;
Expand Down
9 changes: 9 additions & 0 deletions src/conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand Down
1 change: 1 addition & 0 deletions strophe.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 32f4871

Please sign in to comment.