pop3c-sync.c revision d546cddd14aa72823a1104e371527ae0a8a99e00
e59faf65ce864fe95dc00f5d52b8323cdbd0608aTimo Sirainen/* Copyright (c) 2011-2016 Dovecot authors, see the included COPYING file */
9f19a50d5966643c4d1c5ca06868ac2ad31bc4d5Timo SirainenARRAY_DEFINE_TYPE(pop3c_sync_msg, struct pop3c_sync_msg);
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainenint pop3c_sync_get_uidls(struct pop3c_mailbox *mbox)
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen if ((pop3c_client_get_capabilities(mbox->client) &
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen "UIDLs not supported by server");
ca98d6a1bbe73499da758a36bfab2963375c8d06Timo Sirainen if (pop3c_client_cmd_stream(mbox->client, "UIDL\r\n",
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen mbox->uidl_pool = pool_alloconly_create("POP3 UIDLs", 1024*32);
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen p_array_init(&uidls, mbox->uidl_pool, 64); seq = 0;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen while ((line = i_stream_read_next_line(input)) != NULL) {
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen if (str_to_uint(line, &line_seq) < 0 || line_seq != seq) {
a2f250a332dfc1e6cd4ffd196c621eb9dbf7b8a1Timo Sirainen /* make msg_uidls non-NULL */
ca98d6a1bbe73499da758a36bfab2963375c8d06Timo Sirainenint pop3c_sync_get_sizes(struct pop3c_mailbox *mbox)
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen if (pop3c_client_cmd_stream(mbox->client, "LIST\r\n",
eb0816090cf5a549280ad783b9aa6fec199d36baTimo Sirainen mbox->msg_sizes = i_new(uoff_t, mbox->msg_count); seq = 0;
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen while ((line = i_stream_read_next_line(input)) != NULL) {
96308127e006bb3b1108093bcf4cc1fd9481cb7aTimo Sirainen if (str_to_uint(line, &line_seq) < 0 || line_seq != seq) {
9f19a50d5966643c4d1c5ca06868ac2ad31bc4d5Timo Sirainen if (str_to_uoff(p, &mbox->msg_sizes[seq-1]) < 0) {
61b0637759146621cbb7edcbd0b03a71cfd66dfeTimo Sirainen "Invalid LIST size: %s", p);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenpop3c_get_local_msgs(pool_t pool, ARRAY_TYPE(pop3c_sync_msg) *local_msgs,
48270badadd82279bfe50ae3d187aea8b0b2b30eTimo Sirainen if (mail_cache_lookup_field(cache_view, str, seq,
int ret;
if (ret < 0) {
lidx++;
} else if (ret > 0) {
ridx++;
lidx++;
ridx++;
unsigned int idx;
const char *reply;
int ret;
if (ret <= 0) {
if (ret < 0)
return ret;
if (deletions) {
&reply) < 0) {
struct mailbox_sync_context *
int ret = 0;
if (ret == 0)