Mercurial > dovecot > core-2.2
diff src/doveadm/dsync/dsync-ibc-stream.c @ 15231:454d0563927d
doveadm: "backup" command is working again.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 21 Oct 2012 10:01:54 +0300 |
parents | 002e0a120c2a |
children | f9e8cbb2792d |
line wrap: on
line diff
--- a/src/doveadm/dsync/dsync-ibc-stream.c Sun Oct 21 08:22:20 2012 +0300 +++ b/src/doveadm/dsync/dsync-ibc-stream.c Sun Oct 21 10:01:54 2012 +0300 @@ -61,7 +61,7 @@ { .name = "handshake", .chr = 'H', .optional_keys = "sync_ns_prefix sync_type " - "guid_requests mails_have_guids" + "mails_have_guids send_guid_requests backup_send backup_recv" }, { .name = "mailbox_state", .chr = 'S', @@ -71,7 +71,7 @@ { .name = "mailbox_tree_node", .chr = 'N', .required_keys = "name existence", - .optional_keys = "mailbox_guid uid_validity " + .optional_keys = "mailbox_guid uid_validity uid_next " "last_renamed_or_created subscribed last_subscription_change" }, { .name = "mailbox_delete", @@ -538,10 +538,14 @@ } i_assert(sync_type[0] != '\0'); dsync_serializer_encode_add(encoder, "sync_type", sync_type); - if (set->guid_requests) - dsync_serializer_encode_add(encoder, "guid_requests", ""); - if (set->mails_have_guids) + if ((set->brain_flags & DSYNC_BRAIN_FLAG_MAILS_HAVE_GUIDS) != 0) dsync_serializer_encode_add(encoder, "mails_have_guids", ""); + if ((set->brain_flags & DSYNC_BRAIN_FLAG_SEND_GUID_REQUESTS) != 0) + dsync_serializer_encode_add(encoder, "send_guid_requests", ""); + if ((set->brain_flags & DSYNC_BRAIN_FLAG_BACKUP_SEND) != 0) + dsync_serializer_encode_add(encoder, "backup_send", ""); + if ((set->brain_flags & DSYNC_BRAIN_FLAG_BACKUP_RECV) != 0) + dsync_serializer_encode_add(encoder, "backup_recv", ""); dsync_serializer_encode_finish(&encoder, str); dsync_ibc_stream_send_string(ibc, str); @@ -590,10 +594,14 @@ return DSYNC_IBC_RECV_RET_TRYAGAIN; } } - if (dsync_deserializer_decode_try(decoder, "guid_requests", &value)) - set->guid_requests = TRUE; if (dsync_deserializer_decode_try(decoder, "mails_have_guids", &value)) - set->mails_have_guids = TRUE; + set->brain_flags |= DSYNC_BRAIN_FLAG_MAILS_HAVE_GUIDS; + if (dsync_deserializer_decode_try(decoder, "send_guid_requests", &value)) + set->brain_flags |= DSYNC_BRAIN_FLAG_SEND_GUID_REQUESTS; + if (dsync_deserializer_decode_try(decoder, "backup_send", &value)) + set->brain_flags |= DSYNC_BRAIN_FLAG_BACKUP_SEND; + if (dsync_deserializer_decode_try(decoder, "backup_recv", &value)) + set->brain_flags |= DSYNC_BRAIN_FLAG_BACKUP_RECV; *set_r = set; return DSYNC_IBC_RECV_RET_OK; @@ -716,6 +724,10 @@ dsync_serializer_encode_add(encoder, "uid_validity", dec2str(node->uid_validity)); } + if (node->uid_next != 0) { + dsync_serializer_encode_add(encoder, "uid_next", + dec2str(node->uid_next)); + } if (node->last_renamed_or_created != 0) { dsync_serializer_encode_add(encoder, "last_renamed_or_created", dec2str(node->last_renamed_or_created)); @@ -778,6 +790,11 @@ dsync_ibc_input_error(ibc, decoder, "Invalid uid_validity"); return DSYNC_IBC_RECV_RET_TRYAGAIN; } + if (dsync_deserializer_decode_try(decoder, "uid_next", &value) && + str_to_uint32(value, &node->uid_next) < 0) { + dsync_ibc_input_error(ibc, decoder, "Invalid uid_next"); + return DSYNC_IBC_RECV_RET_TRYAGAIN; + } if (dsync_deserializer_decode_try(decoder, "last_renamed_or_created", &value) && str_to_time(value, &node->last_renamed_or_created) < 0) { dsync_ibc_input_error(ibc, decoder, "Invalid last_renamed_or_created");