[packages/offlineimap] - added upstream patch for incorrect way of adding new header in case of missing uidplus cap (fixe

atler atler at pld-linux.org
Tue Nov 25 23:14:14 CET 2014


commit 935ed8a925fc1df40bd5261638be22d4c8015ec2
Author: Jan Palus <atler at pld-linux.org>
Date:   Tue Nov 25 23:11:52 2014 +0100

    - added upstream patch for incorrect way of adding new header in case of
      missing uidplus cap (fixes move with davmail server)
    - rel 2

 offlineimap-no_uidplus.patch | 93 ++++++++++++++++++++++++++++++++++++++++++++
 offlineimap.spec             |  4 +-
 2 files changed, 96 insertions(+), 1 deletion(-)
---
diff --git a/offlineimap.spec b/offlineimap.spec
index c3232f7..4405309 100644
--- a/offlineimap.spec
+++ b/offlineimap.spec
@@ -4,12 +4,13 @@ Summary:	Mailboxes synchronization tool
 Summary(pl.UTF-8):	Narzędzie do synchroniczacji skrzynek pocztowych
 Name:		offlineimap
 Version:	6.5.6
-Release:	1
+Release:	2
 License:	GPL v2
 Group:		Applications/Mail
 Source0:	http://github.com/OfflineIMAP/%{name}/archive/v%{version}.tar.gz?/%{name}-%{version}.tar.gz
 # Source0-md5:	b595561eb2050767c376df3b92aa0d74
 Patch0:		%{name}-docs.patch
+Patch1:		%{name}-no_uidplus.patch
 URL:		https://offlineimap.org
 BuildRequires:	rpm-pythonprov >= 4.1-13
 %if %{with doc}
@@ -44,6 +45,7 @@ połączenia.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 %build
 %if %{with doc}
diff --git a/offlineimap-no_uidplus.patch b/offlineimap-no_uidplus.patch
new file mode 100644
index 0000000..90ef91f
--- /dev/null
+++ b/offlineimap-no_uidplus.patch
@@ -0,0 +1,93 @@
+diff --git a/offlineimap/folder/Base.py b/offlineimap/folder/Base.py
+index 43e79ff..bca52a2 100644
+--- a/offlineimap/folder/Base.py
++++ b/offlineimap/folder/Base.py
+@@ -413,16 +413,26 @@ def deletemessageslabels(self, uidlist, labels):
+ 
+     """
+ 
+-    def addmessageheader(self, content, headername, headervalue):
++    def addmessageheader(self, content, crlf, headername, headervalue):
++        """
++        Adds new header to the provided message.
++
++        Arguments:
++        - content: message content, headers and body as a single string
++        - crlf: string that carries line ending
++        - headername: name of the header to add
++        - headervalue: value of the header to add
++
++        """
+         self.ui.debug('',
+                  'addmessageheader: called to add %s: %s' % (headername,
+                                                              headervalue))
+-        prefix = '\n'
++        prefix = crlf
+         suffix = ''
+-        insertionpoint = content.find('\n\n')
++        insertionpoint = content.find(crlf + crlf)
+         if insertionpoint == 0 or insertionpoint == -1:
+             prefix = ''
+-            suffix = '\n'
++            suffix = crlf
+         if insertionpoint == -1:
+             insertionpoint = 0
+             # When body starts immediately, without preceding '\n'
+@@ -430,8 +440,8 @@ def addmessageheader(self, content, headername, headervalue):
+             # we seen many broken ones), we should add '\n' to make
+             # new (and the only header, in this case) to be properly
+             # separated from the message body.
+-            if content[0] != '\n':
+-                suffix = suffix + '\n'
++            if content[0:len(crlf)] != crlf:
++                suffix = suffix + crlf
+ 
+         self.ui.debug('', 'addmessageheader: insertionpoint = %d' % insertionpoint)
+         headers = content[0:insertionpoint]
+diff --git a/offlineimap/folder/Gmail.py b/offlineimap/folder/Gmail.py
+index f051938..2a598de 100644
+--- a/offlineimap/folder/Gmail.py
++++ b/offlineimap/folder/Gmail.py
+@@ -93,7 +93,7 @@ def getmessage(self, uid):
+                 labels = set()
+             labels = labels - self.ignorelabels
+             labels_str = imaputil.format_labels_string(self.labelsheader, sorted(labels))
+-            body = self.addmessageheader(body, self.labelsheader, labels_str)
++            body = self.addmessageheader(body, '\n', self.labelsheader, labels_str)
+ 
+         if len(body)>200:
+             dbg_output = "%s...%s" % (str(body)[:150], str(body)[-50:])
+diff --git a/offlineimap/folder/GmailMaildir.py b/offlineimap/folder/GmailMaildir.py
+index 3f37b02..be0d20d 100644
+--- a/offlineimap/folder/GmailMaildir.py
++++ b/offlineimap/folder/GmailMaildir.py
+@@ -141,7 +141,7 @@ def savemessagelabels(self, uid, labels, ignorelabels=set()):
+         # Change labels into content
+         labels_str = imaputil.format_labels_string(self.labelsheader,
+           sorted(labels | ignoredlabels))
+-        content = self.addmessageheader(content, self.labelsheader, labels_str)
++        content = self.addmessageheader(content, '\n', self.labelsheader, labels_str)
+         rtime = self.messagelist[uid].get('rtime', None)
+ 
+         # write file with new labels to a unique file in tmp
+diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py
+index 4801eef..3b506e5 100644
+--- a/offlineimap/folder/IMAP.py
++++ b/offlineimap/folder/IMAP.py
+@@ -526,6 +526,7 @@ def savemessage(self, uid, content, flags, rtime):
+         # NB: imapobj to None.
+         try:
+             while retry_left:
++                # XXX: we can mangle message only once, out of the loop
+                 # UIDPLUS extension provides us with an APPENDUID response.
+                 use_uidplus = 'UIDPLUS' in imapobj.capabilities
+ 
+@@ -535,7 +536,7 @@ def savemessage(self, uid, content, flags, rtime):
+                                                     content)
+                     self.ui.debug('imap', 'savemessage: header is: %s: %s' %\
+                                       (headername, headervalue))
+-                    content = self.addmessageheader(content, headername, headervalue)
++                    content = self.addmessageheader(content, CRLF, headername, headervalue)
+ 
+                 if len(content)>200:
+                     dbg_output = "%s...%s" % (content[:150], content[-50:])
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/offlineimap.git/commitdiff/935ed8a925fc1df40bd5261638be22d4c8015ec2



More information about the pld-cvs-commit mailing list