]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge changes made in Gnus trunk.
authorGnus developers <ding@gnus.org>
Thu, 23 Sep 2010 23:14:02 +0000 (23:14 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 23 Sep 2010 23:14:02 +0000 (23:14 +0000)
nnimap.el (nnimap-update-info): When UIDNEXT is present, use that for the active.
Split -request-update-info into -request-marks and -update-info.
nnimap.el (nnimap-transform-headers): Don't bug out on invalid BODYSTRUCTUREs.
nnimap.el (nnimap-transform-headers): Unfold quoted {42} headers.
nnir.el (nnir-run-imap): Fix up nnir to work with the new nnimap.
nnimap.el (nnimap-stream): Add starttls support.
gnus-int.el (gnus-request-update-info): Protect against backends not having the function.
gnus-html.el (gnus-html-rescale-image): Revert change that uses window-inside-pixel-edges.
gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news): Remove.
nnimap.el (nnimap-retrieve-headers): Return 'headers.
gnus-sum.el (gnus-summary-local-variables): Prepare for list/range makeover.
gnus-start.el: Add new variable gnus-use-backend-marks, and start reading marks again.

14 files changed:
doc/misc/gnus.texi
lisp/gnus/ChangeLog
lisp/gnus/gnus-html.el
lisp/gnus/gnus-int.el
lisp/gnus/gnus-start.el
lisp/gnus/gnus-sum.el
lisp/gnus/nnfolder.el
lisp/gnus/nnimap.el
lisp/gnus/nnir.el
lisp/gnus/nnmaildir.el
lisp/gnus/nnmairix.el
lisp/gnus/nnml.el
lisp/gnus/nntp.el
lisp/gnus/nnweb.el

index 3085b338e97cbf705df488b3616916469b2e2ebc..39137996f8575db1c8d3bc324d8c279f230876e0 100644 (file)
@@ -1646,6 +1646,12 @@ If non-@code{nil}, play the Gnus jingle at startup.
 Jingle to be played if the above variable is non-@code{nil}.  The
 default is @samp{Tuxedomoon.Jingle4.au}.
 
+@item gnus-use-backend-marks
+@vindex gnus-use-backend-marks
+If non-@code{nil}, Gnus will store article marks both in the
+@file{.newsrc.eld} file and in the backends.  This will slow down
+group operation some.
+
 @end table
 
 
index 3ca70cabe501e8a68a64f149b8a4b60e080ee54e..b60c5dffb8e6c2e4b7aaac7406ea195ac98f3fb2 100644 (file)
@@ -1,3 +1,61 @@
+2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-start.el (gnus-use-backend-marks): New variable.
+       (gnus-get-unread-articles-in-group): Use it.
+
+       * gnus-sum.el (gnus-summary-local-variables): Prepare for list/range
+       makeover.
+
+2010-09-23  Andrew Cohen  <cohen@andy.bu.edu>
+
+       * nnimap.el (nnimap-retrieve-headers): Return 'headers.
+
+2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news):
+       Removed.
+       (gnus-setup-news-hook): Removed
+       gnus-fixup-nnimap-unread-after-getting-new-news.
+
+       * gnus-int.el (gnus-request-update-info): Protect against backends not
+       having the function.
+
+       * nnimap.el (nnimap-stream): Mention starttls.
+       (nnimap-open-connection): Add starttls support.
+
+2010-09-23  Andrew Cohen  <cohen@andy.bu.edu>
+
+       * nnir.el (nnir-run-imap): Fix up nnir to work with the new nnimap.
+
+2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-transform-headers): Don't bug out on invalid
+       BODYSTRUCTUREs.
+       (nnimap-transform-headers): Unfold quoted {42} headers.
+
+       * gnus-start.el (gnus-get-unread-articles): Allow backends to update
+       the info.
+       (gnus-get-unread-articles): Only call updatep on backends that support
+       it.
+
+       * nnweb.el (nnweb-request-update-info): NOOP.
+
+       * nnmaildir.el (nnmaildir-request-marks): Renamed from -update-info.
+
+       * nnfolder.el (nnfolder-request-marks): Renamed from -update-info,
+       since it only deals with marks.
+
+       * gnus-int.el (gnus-request-marks): Renamed gnus-request-update-info to
+       gnus-request-marks, and make a new gnus-request-update-info.
+
+       * nnimap.el (nnimap-update-info): When UIDNEXT is present, use that for
+       the active instead of the high number, which is usually too low.
+
+2010-09-23  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * netrc.el (netrc-parse): Remove encrypt.el mentions.
+       * encrypt.el: Removed.
+
 2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * nnimap.el (nnimap-update-info): Sync non-standard flags from the
        `gnus-get-unread-articles-in-group' update info, since that can be
        really slow and doesn't seem to be needed?
 
-2010-09-22  Dan Christensen  <jdc@uwo.ca>
-
-       * time-date.el (date-to-time): Try using parse-time-string first before
-       using the slower timezone-make-date-arpa-standard.
-
 2010-09-22  Julien Danjou  <julien@danjou.info>
 
        * gnus-group.el (gnus-group-insert-group-line): Call
 
 2010-09-22  Julien Danjou  <julien@danjou.info>
 
-       * gnus-html.el (gnus-html-rescale-image): Use window-inside-pixel-edges
-       rather than window-pixel-edges.
-       (gnus-html-put-image): Stop using markers. They are harmful if you have
-       2 images side-by-side, they can't be properly update on text deletion.
-       Using text-property is safer here.
+       * gnus-html.el (gnus-html-put-image): Stop using markers. They are
+       harmful if you have 2 images side-by-side, they can't be properly
+       update on text deletion.  Using text-property is safer here.
        (gnus-html-image-fetched): Search also for \r\n\r\n to get the start of
        data.
 
index 8acd6f8679c66534e67390a6712b4ed25294e9dc..a693a2b842d86626fe597f39bb21c328de1c3b2b 100644 (file)
@@ -432,7 +432,7 @@ Return a string with image data."
       image
     (let* ((width (car size))
           (height (cdr size))
-          (edges (window-inside-pixel-edges (get-buffer-window (current-buffer))))
+          (edges (window-pixel-edges (get-buffer-window (current-buffer))))
           (window-width (truncate (* gnus-max-image-proportion
                                      (- (nth 2 edges) (nth 0 edges)))))
           (window-height (truncate (* gnus-max-image-proportion
index df7f979d5385aed5a93da391d5eb4007caed3c23..395f47daf3504e3a144c83e54498b41d07731e20 100644 (file)
@@ -584,12 +584,21 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
               (and group (gnus-group-real-name group))
               (nth 1 gnus-command-method)))))
 
-(defsubst gnus-request-update-info (info gnus-command-method)
+(defun gnus-request-update-info (info gnus-command-method)
+  (when (gnus-check-backend-function
+        'request-update-info (car gnus-command-method))
+    (when (stringp gnus-command-method)
+      (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
+    (funcall (gnus-get-function gnus-command-method 'request-update-info)
+            (gnus-group-real-name (gnus-info-group info)) info
+            (nth 1 gnus-command-method))))
+
+(defsubst gnus-request-marks (info gnus-command-method)
   "Request that GNUS-COMMAND-METHOD update INFO."
   (when (stringp gnus-command-method)
     (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
   (when (gnus-check-backend-function
-        'request-update-info (car gnus-command-method))
+        'request-marks (car gnus-command-method))
     (let ((group (gnus-info-group info)))
       (and (funcall (gnus-get-function gnus-command-method
                                       'request-update-info)
index 77ce8ee63243e6317844d658110b4c13e289d10c..d5880e81a782e407f8d4706813f4ab05ed15113a 100644 (file)
@@ -380,6 +380,13 @@ disc."
   :group 'gnus-newsrc
   :type 'boolean)
 
+(defcustom gnus-use-backend-marks nil
+  "If non-nil, Gnus will store and retrieve marks from the backends.
+This means that marks will be stored both in .newsrc.eld and in
+the backend, and will slow operation down somewhat."
+  :group 'gnus-newsrc
+  :type 'boolean)
+
 (defcustom gnus-check-bogus-groups-hook nil
   "A hook run after removing bogus groups."
   :group 'gnus-start-server
@@ -402,8 +409,7 @@ This hook is called as the first thing when Gnus is started."
   :group 'gnus-start
   :type 'hook)
 
-(defcustom gnus-setup-news-hook
-  '(gnus-fixup-nnimap-unread-after-getting-new-news)
+(defcustom gnus-setup-news-hook nil
   "A hook after reading the .newsrc file, but before generating the buffer."
   :group 'gnus-start
   :type 'hook)
@@ -420,8 +426,7 @@ This hook is called as the first thing when Gnus is started."
   :type 'hook)
 
 (defcustom gnus-after-getting-new-news-hook
-  '(gnus-display-time-event-handler
-    gnus-fixup-nnimap-unread-after-getting-new-news)
+  '(gnus-display-time-event-handler)
   "*A hook run after Gnus checks for new news when Gnus is already running."
   :group 'gnus-group-new
   :type 'hook)
@@ -1580,6 +1585,13 @@ If SCAN, request a scan of that group as well."
                              (gnus-info-group info)))))
       (gnus-activate-group (gnus-info-group info) nil t))
 
+    ;; Allow backends to update marks, 
+    (when gnus-use-backend-marks
+      (let ((method (inline (gnus-find-method-for-group
+                            (gnus-info-group info)))))
+       (when (gnus-check-backend-function 'request-marks (car method))
+         (gnus-request-marks info method))))
+
     (let* ((range (gnus-info-read info))
           (num 0))
 
@@ -1765,11 +1777,14 @@ If SCAN, request a scan of that group as well."
     (dolist (elem type-cache)
       (destructuring-bind (method method-type infos early-data) elem
        (when (and method infos)
-         ;; See if any of the groups from this method require updating.
-         (gnus-read-active-for-groups method infos early-data)
-         (dolist (info infos)
-           (inline (gnus-get-unread-articles-in-group
-                    info (gnus-active (gnus-info-group info))))))))
+         (let ((updatep (gnus-check-backend-function
+                         'request-update-info (car method))))
+           ;; See if any of the groups from this method require updating.
+           (gnus-read-active-for-groups method infos early-data)
+           (dolist (info infos)
+             (inline (gnus-get-unread-articles-in-group
+                      info (gnus-active (gnus-info-group info))
+                      updatep)))))))
     (gnus-message 6 "Checking new news...done")))
 
 (defun gnus-method-rank (type method)
@@ -3145,20 +3160,6 @@ If this variable is nil, don't do anything."
           (gnus-boundp 'display-time-timer))
       (display-time-event-handler)))
 
-;;;###autoload
-(defun gnus-fixup-nnimap-unread-after-getting-new-news ()
-  (let (server group info)
-    (mapatoms
-     (lambda (sym)
-       (when (and (setq group (symbol-name sym))
-                 (gnus-group-entry group)
-                 (setq info (symbol-value sym)))
-        (gnus-sethash group (cons (nth 2 info) (cdr (gnus-group-entry group)))
-                      gnus-newsrc-hashtb)))
-     (if (boundp 'nnimap-mailbox-info)
-        (symbol-value 'nnimap-mailbox-info)
-       (make-vector 1 0)))))
-
 (defun gnus-check-reasonable-setup ()
   ;; Check whether nnml and nnfolder share a directory.
   (let ((display-warn
index c4a721691f90d152601613533cac6036596c72f8..622665d519efb064cc47ddc907e659a8173b8cd4 100644 (file)
@@ -1539,22 +1539,34 @@ This list will always be a subset of gnus-newsgroup-undownloaded.")
 
 (defvar gnus-summary-local-variables
   '(gnus-newsgroup-name
+
+    ;; Marks lists
+    gnus-newsgroup-unreads
+    gnus-newsgroup-unselected
+    gnus-newsgroup-marked
+    gnus-newsgroup-spam-marked
+    gnus-newsgroup-reads
+    gnus-newsgroup-saved
+    gnus-newsgroup-replied
+    gnus-newsgroup-forwarded
+    gnus-newsgroup-recent
+    gnus-newsgroup-expirable
+    gnus-newsgroup-killed
+    gnus-newsgroup-unseen
+    gnus-newsgroup-seen
+    gnus-newsgroup-cached
+    gnus-newsgroup-downloadable
+    gnus-newsgroup-undownloaded
+    gnus-newsgroup-unsendable
+
     gnus-newsgroup-begin gnus-newsgroup-end
     gnus-newsgroup-last-rmail gnus-newsgroup-last-mail
     gnus-newsgroup-last-folder gnus-newsgroup-last-file
     gnus-newsgroup-last-directory
-    gnus-newsgroup-auto-expire gnus-newsgroup-unreads
-    gnus-newsgroup-unselected gnus-newsgroup-marked
-    gnus-newsgroup-spam-marked
-    gnus-newsgroup-reads gnus-newsgroup-saved
-    gnus-newsgroup-replied gnus-newsgroup-forwarded
-    gnus-newsgroup-recent
-    gnus-newsgroup-expirable
-    gnus-newsgroup-processable gnus-newsgroup-killed
-    gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
+    gnus-newsgroup-auto-expire
+    gnus-newsgroup-processable
     gnus-newsgroup-unfetched
-    gnus-newsgroup-unsendable gnus-newsgroup-unseen
-    gnus-newsgroup-seen gnus-newsgroup-articles
+    gnus-newsgroup-articles
     gnus-newsgroup-bookmarks gnus-newsgroup-dormant
     gnus-newsgroup-headers gnus-newsgroup-threads
     gnus-newsgroup-prepared gnus-summary-highlight-line-function
@@ -1573,7 +1585,7 @@ This list will always be a subset of gnus-newsgroup-undownloaded.")
     (gnus-newsgroup-adaptive . gnus-use-adaptive-scoring)
     gnus-newsgroup-adaptive-score-file (gnus-reffed-article-number . -1)
     (gnus-newsgroup-expunged-tally . 0)
-    gnus-cache-removable-articles gnus-newsgroup-cached
+    gnus-cache-removable-articles
     gnus-newsgroup-data gnus-newsgroup-data-reverse
     gnus-newsgroup-limit gnus-newsgroup-limits
     gnus-newsgroup-charset gnus-newsgroup-display
index 1e0a950c40ee48779b8c6c390f3a439e6fc689fe..c3d0d1cdb91abb20c04a555eaf5cb8ae460fe806 100644 (file)
@@ -1202,7 +1202,7 @@ This command does not work if you use short group names."
     (nnfolder-save-marks group server))
   nil)
 
-(deffoo nnfolder-request-update-info (group info &optional server)
+(deffoo nnfolder-request-marks (group info &optional server)
   ;; Change servers.
   (when (and server
             (not (nnfolder-server-opened server)))
index fcf501d8dd0813a6aa5967c1f4d282b113b3067f..2d4f0de87cdb4544e0473292f182a63d450b22b6 100644 (file)
@@ -51,7 +51,7 @@ it will default to `imap'.")
 
 (defvoo nnimap-stream 'ssl
   "How nnimap will talk to the IMAP server.
-Values are `ssl', `network' or `shell'.")
+Values are `ssl', `network', `starttls' or `shell'.")
 
 (defvoo nnimap-shell-program (if (boundp 'imap-shell-program)
                                 (if (listp imap-shell-program)
@@ -135,19 +135,26 @@ not done by default on servers that doesn't support that command.")
        (nnimap-transform-headers))
       (insert-buffer-substring
        (nnimap-find-process-buffer (current-buffer))))
-    t))
+    'headers))
 
 (defun nnimap-transform-headers ()
   (goto-char (point-min))
-  (let (article bytes lines size)
+  (let (article bytes lines size string)
     (block nil
       (while (not (eobp))
        (while (not (looking-at "^\\* [0-9]+ FETCH.*UID \\([0-9]+\\)"))
          (delete-region (point) (progn (forward-line 1) (point)))
          (when (eobp)
            (return)))
-       (setq article (match-string 1)
-             bytes (nnimap-get-length)
+       (setq article (match-string 1))
+       ;; Unfold quoted {number} strings.
+       (while (re-search-forward "[^]] {\\([0-9]+\\)}\r\n"
+                                 (1+ (line-end-position)) t)
+         (setq size (string-to-number (match-string 1)))
+         (delete-region (+ (match-beginning 0) 2) (point))
+         (setq string (delete-region (point) (+ (point) size)))
+         (insert (format "%S" string)))
+       (setq bytes (nnimap-get-length)
              lines nil)
        (beginning-of-line)
        (setq size
@@ -157,7 +164,8 @@ not done by default on servers that doesn't support that command.")
                   (match-string 1)))
        (beginning-of-line)
        (when (search-forward "BODYSTRUCTURE" (line-end-position) t)
-         (let ((structure (ignore-errors (read (current-buffer)))))
+         (let ((structure (ignore-errors
+                            (read (current-buffer)))))
            (while (and (consp structure)
                        (not (stringp (car structure))))
              (setq structure (car structure)))
@@ -257,6 +265,11 @@ not done by default on servers that doesn't support that command.")
               "*nnimap*" (current-buffer) nnimap-address
               (or nnimap-server-port "imap"))
              '("imap"))
+            ((eq nnimap-stream 'starttls)
+             (starttls-open-stream
+              "*nnimap*" (current-buffer) nnimap-address
+              (or nnimap-server-port "imap"))
+             '("imap"))
             ((eq nnimap-stream 'ssl)
              (open-tls-stream
               "*nnimap*" (current-buffer) nnimap-address
@@ -273,6 +286,9 @@ not done by default on servers that doesn't support that command.")
                       '(open run)))
        (gnus-set-process-query-on-exit-flag (nnimap-process nnimap-object) nil)
        (when (setq connection-result (nnimap-wait-for-connection))
+         (when (eq nnimap-stream 'starttls)
+           (nnimap-send-command "STARTTLS")
+           (starttls-negotiate (nnimap-process nnimap-object)))
          (unless (equal connection-result "PREAUTH")
            (if (not (setq credentials
                           (if (eq nnimap-authenticator 'anonymous)
@@ -419,14 +435,11 @@ not done by default on servers that doesn't support that command.")
              (when info
                (nnimap-update-infos marks (list info)))
              (goto-char (point-max))
-             (cond
-              (marks
-               (let ((uidnext (nth 5 (car marks))))
-                 (setq high (or (nth 3 (car marks)) (1- uidnext))
-                       low (or (nth 4 (car marks)) uidnext))))
-              ((re-search-backward "UIDNEXT \\([0-9]+\\)" nil t)
-               (setq high (1- (string-to-number (match-string 1)))
-                     low 1)))))
+             (let ((uidnext (nth 5 (car marks))))
+               (setq high (if uidnext
+                              (1- uidnext)
+                            (nth 3 (car marks)))
+                     low (or (nth 4 (car marks)) uidnext)))))
          (erase-buffer)
          (insert
           (format
@@ -782,11 +795,13 @@ not done by default on servers that doesn't support that command.")
       (let ((group (gnus-info-group info))
            (completep (and start-article
                            (= start-article 1))))
+       (when uidnext
+         (setq high (1- uidnext)))
        ;; First set the active ranges based on high/low.
        (if (or completep
                (not (gnus-active group)))
            (gnus-set-active group
-                            (if high
+                            (if (and low high)
                                 (cons low high)
                               ;; No articles in this group.
                               (cons uidnext (1- uidnext))))
index 954b4895da79a90da6cea6765d400f8b034be3bb..9fe37baf95ea28723d4b1239b1b1444d23ef8efe 100644 (file)
@@ -967,23 +967,27 @@ details on the language and supported extensions"
          (defs (caddr (gnus-server-to-method srv)))
          (criteria (or (cdr (assq 'criteria query))
                        nnir-imap-search-field))
-         artlist buf)
+         (gnus-inhibit-demon t)
+         artlist)
       (message "Opening server %s" server)
       (condition-case ()
-         (when (nnimap-open-server server defs) ;; xxx
-           (setq buf nnimap-server-buffer) ;; xxx
-           (message "Searching %s..." group)
-            (let ((arts 0)
-                  (mbx (gnus-group-real-name group)))
-              (when (imap-mailbox-select mbx nil buf)
-                (mapc
-                 (lambda (artnum)
-                   (push (vector group artnum 1) artlist)
-                   (setq arts (1+ arts)))
-                 (imap-search (nnir-imap-make-query criteria qstring) buf))
-                (message "Searching %s... %d matches" mbx arts)))
-            (message "Searching %s...done" group))
-        (quit nil))
+         (when (nnimap-possibly-change-group (gnus-group-short-name group) server)
+           (with-current-buffer (nnimap-buffer)
+             (message "Searching %s..." group)
+             (let ((arts 0)
+                   (result
+                    (nnimap-command "UID SEARCH  %s" 
+                                    (nnir-imap-make-query criteria qstring))))
+               (mapc
+                (lambda (artnum)
+                  (push (vector group artnum 1) artlist)
+                  (setq arts (1+ arts)))
+                (and (car result)
+                     (delete 0 (mapcar #'string-to-number
+                                       (cdr (assoc "SEARCH" (cdr result)))))))
+               (message "Searching %s... %d matches" group arts)))
+           (message "Searching %s...done" group))
+       (quit nil))
       (reverse artlist))))
 
 (defun nnir-imap-make-query (criteria qstring)
index 5b50ddb4b9931329592c993b3087433b4471131c..8a018dc6acabf318e004b1e0f405c487a21cdb2c 100644 (file)
@@ -916,7 +916,7 @@ by nnmaildir-request-article.")
                  "\n")))))
   'group)
 
-(defun nnmaildir-request-update-info (gname info &optional server)
+(defun nnmaildir-request-marks (gname info &optional server)
   (let ((group (nnmaildir--prepare server gname))
        pgname flist always-marks never-marks old-marks dotfile num dir
        markdirs marks mark ranges markdir article read end new-marks ls
index 26d95b21eb3ce891602ccb91f491a015bea7c77c..f38ffd37e521259a1b6d2e79b0df887fa02558eb 100644 (file)
@@ -705,7 +705,7 @@ Other back ends might or might not work.")
 
 (autoload 'nnimap-request-update-info-internal "nnimap")
 
-(deffoo nnmairix-request-update-info (group info &optional server)
+(deffoo nnmairix-request-marks (group info &optional server)
 ;; propagate info from underlying IMAP folder to nnmairix group
 ;; This is currently experimental and must be explicitly activated
 ;; with nnmairix-propagate-marks-to-nnmairix-group
index d05485b32f319cbcbdc41a664b42a2238337ec9e..42b532168758d52f132a187b2770a15ddabaf7ed 100644 (file)
@@ -1047,7 +1047,7 @@ Use the nov database for the current group if available."
     (nnml-save-marks group server))
   nil)
 
-(deffoo nnml-request-update-info (group info &optional server)
+(deffoo nnml-request-marks (group info &optional server)
   (nnml-possibly-change-directory group server)
   (when (and (not nnml-marks-is-evil) (nnml-marks-changed-p group server))
     (nnheader-message 8 "Updating marks for %s..." group)
index 50f11ad24f7fe5480a7d756a93e904d078b21a86..1bf2ce1e368328254614e86e65cdd29cb1bb3134 100644 (file)
@@ -1130,7 +1130,7 @@ command whose response triggered the error."
     (nntp-save-marks group server))
   nil)
 
-(deffoo nntp-request-update-info (group info &optional server)
+(deffoo nntp-request-marks (group info &optional server)
   (when (and (not nntp-marks-is-evil)
             nntp-marks-file-name)
     (nntp-possibly-create-directory group server)
index fceb2a387aaa9e5ce4904343fe1832a0e4db535a..1cfa7a4cbc30544135451c5ad180000f97b06892 100644 (file)
@@ -193,8 +193,7 @@ Valid types include `google', `dejanews', and `gmane'.")
     (nnmail-generate-active (list (assoc server nnweb-group-alist)))
     t))
 
-(deffoo nnweb-request-update-info (group info &optional server)
-  (nnweb-possibly-change-server group server))
+(deffoo nnweb-request-update-info (group info &optional server))
 
 (deffoo nnweb-asynchronous-p ()
   nil)