On Sun, 5 May 1996, Ron Hensley wrote: > As is, Intermud simply core dumped on startup every time > logs showed an attempted connection to the two muds on it at the time, > then an error recieving bitmap form one mud, and an abort() call of intermud > > Hades over at Tempus suggested intializing j to 0 in decode_services and > also to change the while loop fron > while (j != 8) > to > ((while j < 8) > > To no avail however, always decode serices recieves an invalid message > and aborts() > Yeah I had this same problem, when I went to install in on my system. I'm using NetBSD 1.1 and what cleared it up was a re-write of that procedure decode_services() in the intermud.c file. replace the current procedure with the following: (I dont remember all the changes i made .. but they weren't very major) Just cleaned up a little. ------------------------------------------------------------ void decode_services(char *bitmap, struct dns_record *remote_mud) { int i, j; char tmpbuf[32]; char *bufptr, *bytes; strcpy(tmpbuf, "00000000000000000000000000000000"); bufptr = tmpbuf; j = 0; while (j < 8) { switch (bitmap[j]) { case 'F' : bytes = "1111"; break; case 'E' : bytes = "1110"; break; case 'D' : bytes = "1101"; break; case 'C' : bytes = "1100"; break; case 'B' : bytes = "1011"; break; case 'A' : bytes = "1010"; break; case '9' : bytes = "1001"; break; case '8' : bytes = "1000"; break; case '7' : bytes = "0111"; break; case '6' : bytes = "0110"; break; case '5' : bytes = "0101"; break; case '4' : bytes = "0100"; break; case '3' : bytes = "0011"; break; case '2' : bytes = "0010"; break; case '1' : bytes = "0001"; break; case '0' : bytes = "0000"; break; default : sprintf(mybuf, "ERROR: Invalid bitmap from %s - [%c]\n", remote_mud->mud_name, bitmap[j]); DEBUG(mybuf); abort(); break; } for (i = 0; i <= 3; i++) { *bufptr = *bytes; bytes++; bufptr++; } /* while ((*bufptr = *(bytes++))) bufptr++; */ j++; } bufptr = tmpbuf; for (i = 0; i <= 4; i++, bufptr++) { if (i == 0 && *bufptr == '1') SET_BIT(remote_mud->services, ST_INTERWIZ); else if (i == 1 && *bufptr == '1') SET_BIT(remote_mud->services, ST_INTERTELL); else if (i == 2 && *bufptr == '1') SET_BIT(remote_mud->services, ST_INTERPAGE); else if (i == 3 && *bufptr == '1') SET_BIT(remote_mud->services, ST_INTERWHO); else if (i == 4 && *bufptr == '1') SET_BIT(remote_mud->services, ST_INTERBOARD); } } --------------------------------------------- I think thats what solved the prob for me. Michael Scott Aka. the Wayfarer - scottm@workcomm.net
This archive was generated by hypermail 2b30 : 12/18/00 PST