don't make bogus attempts at enabling compression
recycling server connections skips everything up to setting up the prefix (Path/NAMESPACE). "everything" should obviously include enabling compression, as that must be done at most once per connection.
This commit is contained in:
parent
4106de5c14
commit
a3b131b6e8
|
@ -1522,13 +1522,13 @@ static void imap_open_store_authenticate_p3( imap_store_t *, struct imap_cmd *,
|
||||||
#endif
|
#endif
|
||||||
static void imap_open_store_authenticate2( imap_store_t * );
|
static void imap_open_store_authenticate2( imap_store_t * );
|
||||||
static void imap_open_store_authenticate2_p2( imap_store_t *, struct imap_cmd *, int );
|
static void imap_open_store_authenticate2_p2( imap_store_t *, struct imap_cmd *, int );
|
||||||
static void imap_open_store_namespace( imap_store_t * );
|
|
||||||
static void imap_open_store_namespace_p2( imap_store_t *, struct imap_cmd *, int );
|
|
||||||
static void imap_open_store_namespace2( imap_store_t * );
|
|
||||||
static void imap_open_store_compress( imap_store_t * );
|
static void imap_open_store_compress( imap_store_t * );
|
||||||
#ifdef HAVE_LIBZ
|
#ifdef HAVE_LIBZ
|
||||||
static void imap_open_store_compress_p2( imap_store_t *, struct imap_cmd *, int );
|
static void imap_open_store_compress_p2( imap_store_t *, struct imap_cmd *, int );
|
||||||
#endif
|
#endif
|
||||||
|
static void imap_open_store_namespace( imap_store_t * );
|
||||||
|
static void imap_open_store_namespace_p2( imap_store_t *, struct imap_cmd *, int );
|
||||||
|
static void imap_open_store_namespace2( imap_store_t * );
|
||||||
static void imap_open_store_finalize( imap_store_t * );
|
static void imap_open_store_finalize( imap_store_t * );
|
||||||
#ifdef HAVE_LIBSSL
|
#ifdef HAVE_LIBSSL
|
||||||
static void imap_open_store_ssl_bail( imap_store_t * );
|
static void imap_open_store_ssl_bail( imap_store_t * );
|
||||||
|
@ -1668,7 +1668,7 @@ imap_open_store_authenticate( imap_store_t *ctx )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
imap_open_store_namespace( ctx );
|
imap_open_store_compress( ctx );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2045,9 +2045,35 @@ imap_open_store_authenticate2_p2( imap_store_t *ctx, struct imap_cmd *cmd ATTR_U
|
||||||
if (response == RESP_NO)
|
if (response == RESP_NO)
|
||||||
imap_open_store_bail( ctx, FAIL_FINAL );
|
imap_open_store_bail( ctx, FAIL_FINAL );
|
||||||
else if (response == RESP_OK)
|
else if (response == RESP_OK)
|
||||||
imap_open_store_namespace( ctx );
|
imap_open_store_compress( ctx );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
imap_open_store_compress( imap_store_t *ctx )
|
||||||
|
{
|
||||||
|
#ifdef HAVE_LIBZ
|
||||||
|
if (CAP(COMPRESS_DEFLATE)) {
|
||||||
|
imap_exec( ctx, 0, imap_open_store_compress_p2, "COMPRESS DEFLATE" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
imap_open_store_namespace( ctx );
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBZ
|
||||||
|
static void
|
||||||
|
imap_open_store_compress_p2( imap_store_t *ctx, struct imap_cmd *cmd ATTR_UNUSED, int response )
|
||||||
|
{
|
||||||
|
if (response == RESP_NO) {
|
||||||
|
/* We already reported an error, but it's not fatal to us. */
|
||||||
|
imap_open_store_namespace( ctx );
|
||||||
|
} else if (response == RESP_OK) {
|
||||||
|
socket_start_deflate( &ctx->conn );
|
||||||
|
imap_open_store_namespace( ctx );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
imap_open_store_namespace( imap_store_t *ctx )
|
imap_open_store_namespace( imap_store_t *ctx )
|
||||||
{
|
{
|
||||||
|
@ -2063,7 +2089,7 @@ imap_open_store_namespace( imap_store_t *ctx )
|
||||||
imap_open_store_namespace2( ctx );
|
imap_open_store_namespace2( ctx );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
imap_open_store_compress( ctx );
|
imap_open_store_finalize( ctx );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2093,38 +2119,12 @@ imap_open_store_namespace2( imap_store_t *ctx )
|
||||||
ctx->prefix = nsp_1st_ns->val;
|
ctx->prefix = nsp_1st_ns->val;
|
||||||
if (!ctx->delimiter)
|
if (!ctx->delimiter)
|
||||||
ctx->delimiter = nfstrdup( nsp_1st_dl->val );
|
ctx->delimiter = nfstrdup( nsp_1st_dl->val );
|
||||||
imap_open_store_compress( ctx );
|
imap_open_store_finalize( ctx );
|
||||||
} else {
|
} else {
|
||||||
imap_open_store_bail( ctx, FAIL_FINAL );
|
imap_open_store_bail( ctx, FAIL_FINAL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
imap_open_store_compress( imap_store_t *ctx )
|
|
||||||
{
|
|
||||||
#ifdef HAVE_LIBZ
|
|
||||||
if (CAP(COMPRESS_DEFLATE)) { /* XXX make that configurable */
|
|
||||||
imap_exec( ctx, 0, imap_open_store_compress_p2, "COMPRESS DEFLATE" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
imap_open_store_finalize( ctx );
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_LIBZ
|
|
||||||
static void
|
|
||||||
imap_open_store_compress_p2( imap_store_t *ctx, struct imap_cmd *cmd ATTR_UNUSED, int response )
|
|
||||||
{
|
|
||||||
if (response == RESP_NO) {
|
|
||||||
/* We already reported an error, but it's not fatal to us. */
|
|
||||||
imap_open_store_finalize( ctx );
|
|
||||||
} else if (response == RESP_OK) {
|
|
||||||
socket_start_deflate( &ctx->conn );
|
|
||||||
imap_open_store_finalize( ctx );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
imap_open_store_finalize( imap_store_t *ctx )
|
imap_open_store_finalize( imap_store_t *ctx )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user