From: Aki Tuomi Date: Wed, 3 Oct 2018 09:00:55 +0000 (+0300) Subject: push-notification: Resolve confusion about msg->seq X-Git-Tag: 2.3.9~1361 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31485c6a6113bc88e38029ab98201e3515504ed8;p=thirdparty%2Fdovecot%2Fcore.git push-notification: Resolve confusion about msg->seq It's not the same seq what the mail has, but a sequence that is used to find out UID for saved mails. So rename it to save_idx and treat it accordingly. Note that save_idx is 0 based, and mail sequence is 1 based. --- diff --git a/src/plugins/push-notification/push-notification-txn-msg.c b/src/plugins/push-notification/push-notification-txn-msg.c index b8cb552bf6..7a9e3de000 100644 --- a/src/plugins/push-notification/push-notification-txn-msg.c +++ b/src/plugins/push-notification/push-notification-txn-msg.c @@ -26,7 +26,10 @@ push_notification_txn_msg_create(struct push_notification_txn *txn, msg = p_new(txn->pool, struct push_notification_txn_msg, 1); msg->mailbox = mailbox_get_vname(mail->box); /* Save sequence number - used to determine UID later. */ - msg->seq = txn->t->save_count; + if (mail->uid == 0) + msg->save_idx = txn->t->save_count; + else + msg->save_idx = UINT_MAX; msg->uid = mail->uid; hash_table_insert(txn->messages, POINTER_CAST(mail->seq), @@ -65,10 +68,11 @@ push_notification_txn_msg_end(struct push_notification_txn *ptxn, while (hash_table_iterate(hiter, ptxn->messages, &key, &value)) { if (value->uid == 0) { - if (seq_range_array_iter_nth(&siter, value->seq, &uid)) { + if (seq_range_array_iter_nth(&siter, value->save_idx, &uid)) { value->uid = uid; } - } + } else + i_assert(value->save_idx == UINT_MAX); value->uid_validity = uid_validity; array_foreach_modifiable(&ptxn->drivers, dtxn) { diff --git a/src/plugins/push-notification/push-notification-txn-msg.h b/src/plugins/push-notification/push-notification-txn-msg.h index c743b7a128..f0cacbb074 100644 --- a/src/plugins/push-notification/push-notification-txn-msg.h +++ b/src/plugins/push-notification/push-notification-txn-msg.h @@ -17,7 +17,7 @@ struct push_notification_txn_msg { ARRAY(struct push_notification_txn_event *) eventdata; /* Private */ - unsigned int seq; + unsigned int save_idx; };