[NOISE] Hypermail blooper

It turns out that Hypermail is expecting all Message-Id's to be
bracketed with < and >, which I suppose is reasonable !

Paul's messages were tripping it up because their Message-Id's
look like this ...

  Message-Id: red-16-msg960109011548MTP[01.52.00]000000b1-6598

i.e. no bracketing, no local-part "@" domain, and unquoted
special characters :-(

I've changed our copy of Hypermail so that it (a) tries to be
more lenient in what it'll accept, and (b) puts a dummy value
("BOZO"!) into the variable it stores the Message-Id in if
there's a null Message-Id.  My patch is attached, in case
anyone else might find it useful. It _seems_ to work!

The old archive directory is now

  <URL:http://www.roads.lut.ac.uk/lists/http-caching.FCS/>

and

  <URL:http://www.roads.lut.ac.uk/lists/http-caching/>

now contains a freshly generated Hypermail archive which
includes Paul's messages.  I disabled incoming mail while this
was being generated, so it should be complete

Cheerio,

Martin

PS Paul - if that was an MS product, could you pass this
message back to the developers ?  Ta!
*** parse.c.FCS	Wed Jan 10 08:25:50 1996
--- parse.c	Wed Jan 10 08:45:37 1996
***************
*** 630,636 ****
  	char *c;
  	static char msgid[MSGDSTRLEN];
  
! 	c = (char *) strchr(line, '<') + 1;
  	for (i = 0; *c && *c != '>' && *c != '\n' && i < MSGDSTRLEN; c++) {
  		if (*c == '\\')
  			continue;
--- 630,645 ----
  	char *c;
  	static char msgid[MSGDSTRLEN];
  
! 	if ((char *)strchr(line, '<') == NULL) {
! 		/* bozo alert!
!                 **   msg-id      =  "<" addr-spec ">" 
! 		** try to recover as best we can
! 		*/
! 		c = (char *) strchr(line, ':') + 1; /* we know this exists! */
! 		while (*c && *c == ' ') c++; /* skip spaces before message ID */
! 	} else {
! 		c = (char *) strchr(line, '<') + 1;
! 	}
  	for (i = 0; *c && *c != '>' && *c != '\n' && i < MSGDSTRLEN; c++) {
  		if (*c == '\\')
  			continue;
***************
*** 637,642 ****
--- 646,653 ----
  		msgid[i++] = *c;
  	}
  	msgid[i] = '\0';
+ 
+ 	if (strlen(msgid) == 0) strcpy(msgid, "BOZO");
  
  	return msgid;
  }

Received on Wednesday, 10 January 1996 11:04:25 UTC