[PATCH] tin 1.9.x threading problem
Urs Janßen <[email protected]> Fri, 15 May 2009 14:31:55 +0200
| Newsgroups | gmane.network.tin.devel |
|---|---|
| Message-ID | <[email protected]> |
the patch below fixes a crash with references/both-threading in the newsgroup alue.devel available on flowerpot.kaijanaho.info (in the thread starting with Message-Id: <[email protected]> / Subject: Feature request: get TLS and authorisation working). I'm not sure if it's the right approach, maybe it should be fixed somewhere else - a review would be nice. === modified file 'src/refs.c' --- src/refs.c 2008-12-30 19:36:57 +0000 +++ src/refs.c 2009-05-15 11:14:03 +0000 @@ -56,7 +56,7 @@ static struct t_msgid *add_msgid(int key, const char *msgid, struct t_msgid *newparent); static struct t_msgid *find_next(struct t_msgid *ptr); static struct t_msgid *parse_references(char *r); -static t_bool valid_msgid(const char *msgid); +static t_bool valid_msgid(char *msgid); static unsigned int hash_msgid(const char *key); static void add_to_parent(struct t_msgid *ptr); static void build_thread(struct t_msgid *ptr); @@ -176,15 +176,16 @@ * Checks if Message-ID has valid format * Returns TRUE if it does, FALSE if it does not * - * TODO: combine with post.c:damaged_id()? + * TODO: combine with post.c:damaged_id() */ static t_bool valid_msgid( - const char *msgid) + char *msgid) { size_t mlen = 0; t_bool at_present = 0; + str_trim(msgid); if (!msgid || *msgid != '<') return FALSE; @@ -968,6 +969,7 @@ for_each_art(i) { art = &arts[i]; + art->refptr = add_msgid(MSGID_REF, art->msgid, NULL); /* preset art->refptr */ if (art->refs) { strip_line(art->refs); @@ -999,9 +1001,7 @@ art->refptr = add_msgid(MSGID_REF, art->msgid, add_msgid(REF_REF, art->refs, NULL)); FreeAndNull(art->refs); } - } else - if (valid_msgid(art->msgid)) - art->refptr = add_msgid(MSGID_REF, art->msgid, NULL); + } FreeAndNull(art->msgid); /* Now cached - discard this */ }