From c2500174ee26fca06a55b443724c8fe90d302a58 Mon Sep 17 00:00:00 2001 From: Arnt Gulbrandsen Date: Tue, 16 Dec 2014 14:58:22 +0100 Subject: [PATCH] comply with the THRID draft instead of using arnt's gmail hack --- imap/handlers/capability.cpp | 2 +- imap/handlers/fetch.cpp | 19 ++++++++----------- imap/handlers/search.cpp | 4 ++-- server/selector.cpp | 4 ++-- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/imap/handlers/capability.cpp b/imap/handlers/capability.cpp index 230513f..9ccb7ae 100644 --- a/imap/handlers/capability.cpp +++ b/imap/handlers/capability.cpp @@ -125,12 +125,12 @@ EString Capability::capabilities( IMAP * i, bool all ) c.append( "THREAD=ORDEREDSUBJECT" ); c.append( "THREAD=REFS" ); c.append( "THREAD=REFERENCES" ); + c.append( "THRID" ); c.append( "UIDPLUS" ); c.append( "UNSELECT" ); c.append( "URLAUTH" ); c.append( "UTF8=ACCEPT" ); c.append( "WITHIN" ); - c.append( "X-AOX-GM-1" ); } return c.join( " " ); diff --git a/imap/handlers/fetch.cpp b/imap/handlers/fetch.cpp index 3d4005b..e39e298 100644 --- a/imap/handlers/fetch.cpp +++ b/imap/handlers/fetch.cpp @@ -283,15 +283,6 @@ void Fetch::parse() void Fetch::parseAttribute( bool alsoMacro ) { - if ( present( "x-gm-msgid" ) ) { - d->databaseId = true; - return; - } - else if ( present( "x-gm-thrid" ) ) { - d->threadId = true; - return; - } - EString keyword = dotLetters( 3, 13 ).lower(); // UID/ALL, RFC822.HEADER if ( alsoMacro && keyword == "all" ) { // equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE) @@ -399,6 +390,12 @@ void Fetch::parseAttribute( bool alsoMacro ) else if ( keyword == "modseq" ) { d->modseq = true; } + else if ( keyword == "msgid" ) { + d->databaseId = true; + } + else if ( keyword == "thrid" ) { + d->threadId = true; + } else { error( Bad, "expected fetch attribute, saw word " + keyword ); } @@ -1111,9 +1108,9 @@ EString Fetch::makeFetchResponse( Message * m, uint uid, uint msn ) if ( d->uid ) l.append( "UID " + fn( uid ) ); if ( d->databaseId ) - l.append( "X-GM-MSGID " + fn( m->databaseId() ) ); + l.append( "MSGID " + fn( m->databaseId() ) ); if ( d->threadId ) - l.append( "X-GM-THRID " + fn( m->threadId() ) ); + l.append( "THRID " + fn( m->threadId() ) ); if ( d->rfc822size ) l.append( "RFC822.SIZE " + fn( m->rfc822Size() ) ); if ( d->flags ) diff --git a/imap/handlers/search.cpp b/imap/handlers/search.cpp index 9756e82..721cf9d 100644 --- a/imap/handlers/search.cpp +++ b/imap/handlers/search.cpp @@ -360,12 +360,12 @@ Selector * Search::parseKey() return new Selector( Selector::Rfc822Size, Selector::Smaller, number() ); } - else if ( present( "x-gm-msgid" ) ) { + else if ( present( "msgid" ) ) { space(); return new Selector( Selector::DatabaseId, Selector::Equals, number() ); } - else if ( present( "x-gm-thrid" ) ) { + else if ( present( "thrid" ) ) { space(); return new Selector( Selector::ThreadId, Selector::Equals, number() ); diff --git a/server/selector.cpp b/server/selector.cpp index e0f4569..1b68a2a 100644 --- a/server/selector.cpp +++ b/server/selector.cpp @@ -1666,7 +1666,7 @@ EString Selector::whereAge() } -/*! This implements the x-gm-msgid search-key. */ +/*! This implements the msgid search-key. */ EString Selector::whereDatabaseId() { @@ -1681,7 +1681,7 @@ EString Selector::whereDatabaseId() } -/*! This implements the x-gm-msgid search-key. */ +/*! This implements the thrid search-key. */ EString Selector::whereThreadId() { -- 2.1.4