problem with I-D announcements

Ladislav Lhotka lhotka at cesnet.cz
Tue Aug 24 05:09:59 PDT 2010


On Mon, 16 Aug 2010 16:02:59 +0200, Michal Sojka <sojkam1 at fel.cvut.cz> wrote:
> On Mon, 16 Aug 2010, Ladislav Lhotka wrote:
> > I am experiencing a problem with a specific type of messages, namely
> > announcements of new Internet drafts. One such message is shown below
> > with all headers.
> > 
> > In a search buffer, if I press [RET], the message is shown but the echo
> > line says "Couldn't find access type". The [SPC] key then doesn't work,
> > only "Beginning of buffer" is displayed in the echo area. Other
> > commands, such as adding tags, work as usual.
> 
> Greetings to another czech notmuch user :-)
> 
> I can confirm the behavior you describe. It seems the error message is
> generated by mm-extern-cache-contents in gnus/mm-extern.el. According to
> comments in that file, it works with something called
> "message/external-body". Currently, I have no clue what external-body
> means but your message contains such thing.
> 
> My poor Elisp knowledge doesn't allow me to debug the problem, but you
> may want to check whether the same problem appears in Gnus and if so,
> consult it with Gnus developers.

With my faint Elisp expertise, I tried to investigate the problem a bit
and it seems it is in the notmuch elisp part. The
'mm-extern-cache-contents' function you mentioned
initializes the 'access-type' variable like this:

  (let* ((access-type (cdr (assq 'access-type
				 (cdr (mm-handle-type handle)))))

The 'handle' argument for the problematic message looks like this:
(#<buffer  *temp*> ("message/external-body") nil nil nil nil nil nil)

Now, 'mm-handle-type' function extracts the second member from 'handle',
which is ("message/external-body"). Applying 'cdr' to this list yields
necessarily nil and so access-type is always initialized to nil and
consequently the error "Couldn't find access type" is reported.

The ("message/external-body") list is constructed originally in
'notmuch-show-insert-bodypart' function and passed - as 'content-type'
argument - through several stack frames. The use of 'cdr' and 'assq'
functions in the above initialization expression however indicates that
'mm-extern-cache-contents' expects something more complex than just a
simple list.

Perhaps someone with deeper knowledge of notmuch elisp internals could
fix this bug?

Cheers, Lada
 
> 
> Cheers,
> Michal

-- 
Ladislav Lhotka, CESNET
PGP Key ID: E74E8C0C


More information about the notmuch mailing list