}
mailbox_close(&mailbox);
- if ((client->workarounds & WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 &&
- *name != '\0' &&
- name[strlen(name)-1] == mailbox_list_get_hierarchy_sep(ns->list)) {
- /* drop the extra trailing hierarchy separator */
- name = t_strndup(name, strlen(name)-1);
- }
-
if (mailbox_list_delete_mailbox(ns->list, name) < 0)
client_send_list_error(cmd, ns->list);
else {
struct mail_namespace *ns;
enum mailbox_name_status mailbox_status;
const char *orig_mailbox, *mailbox, *p, *resp_code = NULL;
+ unsigned int mailbox_len;
orig_mailbox = *mailboxp;
ns = mail_namespace_find(cmd->client->user->namespaces, mailboxp);
return NULL;
}
+ mailbox_len = strlen(mailbox);
+ if ((cmd->client->workarounds & WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 &&
+ mailbox[mailbox_len-1] == mailbox_list_get_hierarchy_sep(ns->list)) {
+ /* drop the extra trailing hierarchy separator */
+ mailbox = t_strndup(mailbox, mailbox_len-1);
+ *mailboxp = mailbox;
+ }
+
if (ns->real_sep != ns->sep && ns->prefix_len < strlen(orig_mailbox)) {
/* make sure there are no real separators used in the mailbox
name. */
}
}
- if (strlen(mailbox) > MAILBOX_MAX_NAME_LEN) {
+ if (mailbox_len > MAILBOX_MAX_NAME_LEN) {
client_send_tagline(cmd, "NO Mailbox name too long.");
return NULL;
}