From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/80672 Path: news.gmane.org!not-for-mail From: Julien Danjou Newsgroups: gmane.emacs.gnus.general Subject: Error when IMAP server UIDs change Date: Tue, 13 Dec 2011 09:57:26 +0100 Message-ID: <87pqfsvog9.fsf@zelenka.enovance.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-Trace: dough.gmane.org 1323766745 25740 80.91.229.12 (13 Dec 2011 08:59:05 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 13 Dec 2011 08:59:05 +0000 (UTC) To: ding@gnus.org Original-X-From: ding-owner+M28954@lists.math.uh.edu Tue Dec 13 09:59:01 2011 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from util0.math.uh.edu ([129.7.128.18]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RaOCS-0002Rt-NF for ding-account@gmane.org; Tue, 13 Dec 2011 09:59:01 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by util0.math.uh.edu with smtp (Exim 4.63) (envelope-from ) id 1RaOBH-0004TI-8T; Tue, 13 Dec 2011 02:57:47 -0600 Original-Received: from mx2.math.uh.edu ([129.7.128.33]) by util0.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1RaOBF-0004T3-9W for ding@lists.math.uh.edu; Tue, 13 Dec 2011 02:57:45 -0600 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx2.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1RaOBC-00014w-M9 for ding@lists.math.uh.edu; Tue, 13 Dec 2011 02:57:44 -0600 Original-Received: from prometheus.naquadah.org ([212.85.154.174] helo=mx1.naquadah.org) by quimby.gnus.org with esmtp (Exim 4.72) (envelope-from ) id 1RaOB9-0004lS-U8 for ding@gnus.org; Tue, 13 Dec 2011 09:57:40 +0100 Original-Received: from zelenka.enovance.com (tru75-2-82-67-204-236.fbx.proxad.net [82.67.204.236]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mx1.naquadah.org (Postfix) with ESMTPSA id A32CA5C219 for ; Tue, 13 Dec 2011 09:57:30 +0100 (CET) Mail-Followup-To: ding@gnus.org User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.92 (gnu/linux) X-Spam-Score: -1.9 (-) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:80672 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, One of the IMAP server I use was upgraded, so almost everything changed, except the groups names, obviously. When I started Gnus, it stopped with the following backtrace: Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil) >(nil 1) (and old-uidvalidity (not (equal old-uidvalidity uidvalidity)) (> start-a= rticle 1)) (let ((old-uidvalidity (cdr (assq (quote uidvalidity) (gnus-info-params i= nfo))))) (and old-uidvalidity (not (equal old-uidvalidity uidvalidity)) (> = start-article 1))) (cond ((and (not existing) (not uidnext)) (let ((active (cdr (assq (quote= active) (gnus-info-params info))))) (when active (gnus-set-active (gnus-in= fo-group info) active)))) ((let ((old-uidvalidity (cdr (assq (quote uidvali= dity) (gnus-info-params info))))) (and old-uidvalidity (not (equal old-uidv= alidity uidvalidity)) (> start-article 1))) (gnus-group-remove-parameter in= fo (quote uidvalidity)) (gnus-group-remove-parameter info (quote modseq))) = (t (let* ((group (gnus-info-group info)) (completep (and start-article (=3D= start-article 1))) (active (or (gnus-active group) (cdr (assq ... ...)))))= (when uidnext (setq high (1- uidnext))) (if (or completep (not (gnus-activ= e group))) (gnus-set-active group (cond (active (cons ... ...)) ((and low h= igh) (cons low high)) (uidnext (cons uidnext ...)) (start-article (cons sta= rt-article ...)) (t nil))) (gnus-set-active group (cons (car active) (or hi= gh (1- uidnext))))) (unless (eq permanent-flags (quote not-scanned)) (gnus-= group-set-parameter info (quote permanent-flags) (and (or (memq ... permane= nt-flags) (memq ... permanent-flags)) permanent-flags))) (when (setq perman= ent-flags (cdr (assq (quote permanent-flags) (gnus-info-params info)))) (if= (and highestmodseq (not start-article)) (nnimap-update-qresync-info info e= xisting (nnimap-imap-ranges-to-gnus-ranges vanished) flags) (let* ((unread = ...) (read ...)) (when (> start-article 1) (setq read ...)) (when (or ... .= ..) (gnus-info-set-read info read)) (setq marks (gnus-info-marks info)) (do= list (type ...) (when ... ...)) (gnus-info-set-marks info marks t)))) (let = ((recent (cdr (assoc ... flags)))) (when (and active recent (> (car ...) (c= dr active))) (push (list (cons ... 0)) nnmail-split-history))) (gnus-group-= set-parameter info (quote active) (gnus-active group)) (gnus-group-set-para= meter info (quote uidvalidity) uidvalidity) (gnus-group-set-parameter info = (quote modseq) highestmodseq) (nnimap-store-info info (gnus-active group)))= )) (let* ((--cl-rest-- marks) (existing (if (=3D (length --cl-rest--) 10) (p= op --cl-rest--) (signal (quote wrong-number-of-arguments) (list nil (length= --cl-rest--))))) (flags (pop --cl-rest--)) (high (pop --cl-rest--)) (low (= pop --cl-rest--)) (uidnext (pop --cl-rest--)) (start-article (pop --cl-rest= --)) (permanent-flags (pop --cl-rest--)) (uidvalidity (pop --cl-rest--)) (v= anished (pop --cl-rest--)) (highestmodseq (car --cl-rest--))) (cond ((and (= not existing) (not uidnext)) (let ((active (cdr (assq ... ...)))) (when act= ive (gnus-set-active (gnus-info-group info) active)))) ((let ((old-uidvalid= ity (cdr (assq ... ...)))) (and old-uidvalidity (not (equal old-uidvalidity= uidvalidity)) (> start-article 1))) (gnus-group-remove-parameter info (quo= te uidvalidity)) (gnus-group-remove-parameter info (quote modseq))) (t (let= * ((group (gnus-info-group info)) (completep (and start-article (=3D start-= article 1))) (active (or (gnus-active group) (cdr ...)))) (when uidnext (se= tq high (1- uidnext))) (if (or completep (not (gnus-active group))) (gnus-s= et-active group (cond (active ...) (... ...) (uidnext ...) (start-article .= ..) (t nil))) (gnus-set-active group (cons (car active) (or high ...)))) (u= nless (eq permanent-flags (quote not-scanned)) (gnus-group-set-parameter in= fo (quote permanent-flags) (and (or ... ...) permanent-flags))) (when (setq= permanent-flags (cdr (assq ... ...))) (if (and highestmodseq (not start-ar= ticle)) (nnimap-update-qresync-info info existing (nnimap-imap-ranges-to-gn= us-ranges vanished) flags) (let* (... ...) (when ... ...) (when ... ...) (s= etq marks ...) (dolist ... ...) (gnus-info-set-marks info marks t)))) (let = ((recent (cdr ...))) (when (and active recent (> ... ...)) (push (list ...)= nnmail-split-history))) (gnus-group-set-parameter info (quote active) (gnu= s-active group)) (gnus-group-set-parameter info (quote uidvalidity) uidvali= dity) (gnus-group-set-parameter info (quote modseq) highestmodseq) (nnimap-= store-info info (gnus-active group)))))) (progn (let* ((--cl-rest-- marks) (existing (if (=3D (length --cl-rest--)= 10) (pop --cl-rest--) (signal (quote wrong-number-of-arguments) (list nil = (length --cl-rest--))))) (flags (pop --cl-rest--)) (high (pop --cl-rest--))= (low (pop --cl-rest--)) (uidnext (pop --cl-rest--)) (start-article (pop --= cl-rest--)) (permanent-flags (pop --cl-rest--)) (uidvalidity (pop --cl-rest= --)) (vanished (pop --cl-rest--)) (highestmodseq (car --cl-rest--))) (cond = ((and (not existing) (not uidnext)) (let ((active (cdr ...))) (when active = (gnus-set-active (gnus-info-group info) active)))) ((let ((old-uidvalidity = (cdr ...))) (and old-uidvalidity (not (equal old-uidvalidity uidvalidity)) = (> start-article 1))) (gnus-group-remove-parameter info (quote uidvalidity)= ) (gnus-group-remove-parameter info (quote modseq))) (t (let* ((group (gnus= -info-group info)) (completep (and start-article ...)) (active (or ... ...)= )) (when uidnext (setq high (1- uidnext))) (if (or completep (not ...)) (gn= us-set-active group (cond ... ... ... ... ...)) (gnus-set-active group (con= s ... ...))) (unless (eq permanent-flags (quote not-scanned)) (gnus-group-s= et-parameter info (quote permanent-flags) (and ... permanent-flags))) (when= (setq permanent-flags (cdr ...)) (if (and highestmodseq ...) (nnimap-updat= e-qresync-info info existing ... flags) (let* ... ... ... ... ... ...))) (l= et ((recent ...)) (when (and active recent ...) (push ... nnmail-split-hist= ory))) (gnus-group-set-parameter info (quote active) (gnus-active group)) (= gnus-group-set-parameter info (quote uidvalidity) uidvalidity) (gnus-group-= set-parameter info (quote modseq) highestmodseq) (nnimap-store-info info (g= nus-active group))))))) (destructuring-bind (existing flags high low uidnext start-article perman= ent-flags uidvalidity vanished highestmodseq) marks (cond ((and (not existi= ng) (not uidnext)) (let ((active (cdr (assq ... ...)))) (when active (gnus-= set-active (gnus-info-group info) active)))) ((let ((old-uidvalidity (cdr (= assq ... ...)))) (and old-uidvalidity (not (equal old-uidvalidity uidvalidi= ty)) (> start-article 1))) (gnus-group-remove-parameter info (quote uidvali= dity)) (gnus-group-remove-parameter info (quote modseq))) (t (let* ((group = (gnus-info-group info)) (completep (and start-article (=3D start-article 1)= )) (active (or (gnus-active group) (cdr ...)))) (when uidnext (setq high (1= - uidnext))) (if (or completep (not (gnus-active group))) (gnus-set-active = group (cond (active ...) (... ...) (uidnext ...) (start-article ...) (t nil= ))) (gnus-set-active group (cons (car active) (or high ...)))) (unless (eq = permanent-flags (quote not-scanned)) (gnus-group-set-parameter info (quote = permanent-flags) (and (or ... ...) permanent-flags))) (when (setq permanent= -flags (cdr (assq ... ...))) (if (and highestmodseq (not start-article)) (n= nimap-update-qresync-info info existing (nnimap-imap-ranges-to-gnus-ranges = vanished) flags) (let* (... ...) (when ... ...) (when ... ...) (setq marks = ...) (dolist ... ...) (gnus-info-set-marks info marks t)))) (let ((recent (= cdr ...))) (when (and active recent (> ... ...)) (push (list ...) nnmail-sp= lit-history))) (gnus-group-set-parameter info (quote active) (gnus-active g= roup)) (gnus-group-set-parameter info (quote uidvalidity) uidvalidity) (gnu= s-group-set-parameter info (quote modseq) highestmodseq) (nnimap-store-info= info (gnus-active group)))))) nnimap-update-info(("nnimap+eNovance:Lists/ow2/compatible-poc2" 3 ((1 . 4= 344)) ((seen 1091 1828 1834 1858 1892 1913 4344)) "nnimap:eNovance" ((modse= q . "9155") (uidvalidity . "1760") (active 1 . 4344) (permanent-flags %Answ= ered %Deleted %Draft %Flagged %Seen $Forwarded $MDNSent Forwarded gnus-forw= ard %*))) (nil nil nil nil 7243 nil not-scanned "3060" nil "6543")) (progn (nnimap-update-info info marks)) (if marks (progn (nnimap-update-info info marks))) (when marks (nnimap-update-info info marks)) (let* ((group (nnimap-decode-gnus-group (gnus-group-real-name (gnus-info-= group info)))) (marks (cdr (assoc group flags)))) (when marks (nnimap-updat= e-info info marks))) (while --cl-dolist-temp-- (setq info (car --cl-dolist-temp--)) (let* ((gr= oup (nnimap-decode-gnus-group (gnus-group-real-name (gnus-info-group info))= )) (marks (cdr (assoc group flags)))) (when marks (nnimap-update-info info = marks))) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--))) (let ((--cl-dolist-temp-- infos) info) (while --cl-dolist-temp-- (setq in= fo (car --cl-dolist-temp--)) (let* ((group (nnimap-decode-gnus-group (gnus-= group-real-name (gnus-info-group info)))) (marks (cdr (assoc group flags)))= ) (when marks (nnimap-update-info info marks))) (setq --cl-dolist-temp-- (c= dr --cl-dolist-temp--)))) (catch (quote --cl-block-nil--) (let ((--cl-dolist-temp-- infos) info) (w= hile --cl-dolist-temp-- (setq info (car --cl-dolist-temp--)) (let* ((group = (nnimap-decode-gnus-group (gnus-group-real-name ...))) (marks (cdr (assoc g= roup flags)))) (when marks (nnimap-update-info info marks))) (setq --cl-dol= ist-temp-- (cdr --cl-dolist-temp--))))) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ((--cl-dolist-temp= -- infos) info) (while --cl-dolist-temp-- (setq info (car --cl-dolist-temp-= -)) (let* ((group (nnimap-decode-gnus-group ...)) (marks (cdr ...))) (when = marks (nnimap-update-info info marks))) (setq --cl-dolist-temp-- (cdr --cl-= dolist-temp--)))))) (block nil (let ((--cl-dolist-temp-- infos) info) (while --cl-dolist-temp= -- (setq info (car --cl-dolist-temp--)) (let* ((group (nnimap-decode-gnus-g= roup (gnus-group-real-name ...))) (marks (cdr (assoc group flags)))) (when = marks (nnimap-update-info info marks))) (setq --cl-dolist-temp-- (cdr --cl-= dolist-temp--))))) (dolist (info infos) (let* ((group (nnimap-decode-gnus-group (gnus-group-= real-name (gnus-info-group info)))) (marks (cdr (assoc group flags)))) (whe= n marks (nnimap-update-info info marks)))) [=E2=80=A6] gnus() I "fixed" it with the following hack: diff --git a/lisp/nnimap.el b/lisp/nnimap.el index b4e6e31..56c06ff 100644 =2D-- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -1332,7 +1332,8 @@ textual parts.") (cdr (assq 'uidvalidity (gnus-info-params info))))) (and old-uidvalidity (not (equal old-uidvalidity uidvalidity)) =2D (> start-article 1))) + (or (not start-article) + (> start-article 1)))) (gnus-group-remove-parameter info 'uidvalidity) (gnus-group-remove-parameter info 'modseq)) ;; We have the data needed to update. Lars, WDYT? =2D-=20 Julien Danjou --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAEBAgAGBQJO5xN2AAoJEGEbqVCLeKXCaKkP/jFChSYHFHJSYnHfpQRbJ2HQ piZQ+s3/1zpA3arEJV3EpURwz9h6bwBLoWgHvsVfhB452kEaUOujxEdxS9VMmWa5 z7CPwbN0mdpSSTyFIk/tFi5FS2Q6FaQiFfc9OlB/f1KNSJy9PWmPykKa6awsSDaD rc3a58huc2LMHOaTECZF9oFgywHZKHDbQ+KPzapRB/T7yUrja/FbXyrgSGqQkY+x IPzoUXC8HJj+15Y9iFMwwctPAWQyQOz+gP+UAqA0zxat4lScMNP8UIlz5vhcNt+t GLLbo+kBwFWb9Iv11BzdnzLEhY5SQcJvatppMc+Gq7JWIz0bZ7SMllWIwAM0kopo Bqn7kY7d06Yt9Mzt6XQsQ04+eYPcvRMIF4uQtaaNnSjsiH6l+iEEjhFVqxmze+FJ BW4KkUOvbxpaBQzMClD9cBvwB2A8CGygZ0zf2rRcG9Vho12abt9byBW1elDPP7KN TkwtUbo1HoxSBFz6BFRHNxwFV/kqDGBp7j8QjfmwnLEProRfHLOlDaY5OQFIQidC ikcLweRljL+RQbAnkpY2Js9/pUA2+mZpFqIIA9Hyy8qJxlL5xYp1D8z41hdBTh+R L7/DjKadpNfkpzoCCkDwnelx+KPv2UyT+kx6tsvyJPJPyftFOPcy05R3C4BnGZs0 3r6bXSh2HV3fdKMSoGN5 =vM1p -----END PGP SIGNATURE----- --=-=-=--