|
|
|
@ -1529,13 +1529,13 @@ static void imap_open_store_authenticate_p3( imap_store_t *, struct imap_cmd *,
|
|
|
|
|
#endif |
|
|
|
|
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_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 * ); |
|
|
|
|
#ifdef HAVE_LIBZ |
|
|
|
|
static void imap_open_store_compress_p2( imap_store_t *, struct imap_cmd *, int ); |
|
|
|
|
#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 * ); |
|
|
|
|
#ifdef HAVE_LIBSSL |
|
|
|
|
static void imap_open_store_ssl_bail( imap_store_t * ); |
|
|
|
@ -1680,7 +1680,7 @@ imap_open_store_authenticate( imap_store_t *ctx )
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
imap_open_store_namespace( ctx ); |
|
|
|
|
imap_open_store_compress( ctx ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2057,8 +2057,34 @@ imap_open_store_authenticate2_p2( imap_store_t *ctx, struct imap_cmd *cmd ATTR_U
|
|
|
|
|
if (response == RESP_NO) |
|
|
|
|
imap_open_store_bail( ctx, FAIL_FINAL ); |
|
|
|
|
else if (response == RESP_OK) |
|
|
|
|
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 |
|
|
|
|
imap_open_store_namespace( imap_store_t *ctx ) |
|
|
|
@ -2075,7 +2101,7 @@ imap_open_store_namespace( imap_store_t *ctx )
|
|
|
|
|
imap_open_store_namespace2( ctx ); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
imap_open_store_compress( ctx ); |
|
|
|
|
imap_open_store_finalize( ctx ); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
@ -2105,38 +2131,12 @@ imap_open_store_namespace2( imap_store_t *ctx )
|
|
|
|
|
ctx->prefix = nsp_1st_ns->val; |
|
|
|
|
if (!ctx->delimiter) |
|
|
|
|
ctx->delimiter = nfstrdup( nsp_1st_dl->val ); |
|
|
|
|
imap_open_store_compress( ctx ); |
|
|
|
|
imap_open_store_finalize( ctx ); |
|
|
|
|
} else { |
|
|
|
|
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 |
|
|
|
|
imap_open_store_finalize( imap_store_t *ctx ) |
|
|
|
|
{ |
|
|
|
|