From ChangeLog:
> 1/16/98
>
> -- gg - interpreter.c/ban.c: nanny()/Valid_Name(): Fixed the long-standing
> Diku bug where you could create two characters with the same name by
> proceeding one step at a time in two different sessions.
I don't know if anyone's noticed this before, but the above bug fix
caused another bug to pop up. If you log on a character, but do not enter
the game, (sit on the menu, change description, change password, etc) then
you will be unable to connect to the mud with the same name in a different
window, it will say "Invalid Name". Thus, it's possible (and I've done this,
once ;-) ) to lock yourself out of your character by having your link
freeze up when you're at the menu, and then attempting to reconnect.
"Having your link freeze up" being defined as: the mud thinks the
descriptor is still valid, despite you loosing connection, and doesn't
destroy it.
The fix I used is to modify the Valid_Name function in ban.c. The code:
for (dt = descriptor_list; dt; dt = dt->next)
if (dt->character && GET_NAME(dt->character) && !str_cmp(GET_NAME(dt->character), newname))
return (STATE(dt) == CON_PLAYING);
Should be replaced with:
/* New, unindexed characters (i.e., characters who are in the process of creating)
* will have an idnum of -1, set by clear_char() in db.c. If someone is creating a
* character by the same name as the one we are checking, then the name is invalid,
* to prevent character duping.
*/
for (dt = descriptor_list; dt; dt = dt->next)
if (dt->character && GET_NAME(dt->character) && !str_cmp(GET_NAME(dt->character), newname))
if (GET_IDNUM(dt->character) == -1)
return (0);
If anyone's encountered this bug before, hope this helps.
-- Ben C
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/11/01 PDT