--- deliantra/server/ext/login.ext 2007/01/18 21:27:19 1.26 +++ deliantra/server/ext/login.ext 2007/02/17 23:54:35 1.31 @@ -107,7 +107,7 @@ . "Chose another, or wait till the other session has ended.", cf::NDI_RED ); - } elsif ($user =~ /^[a-zA-Z0-9][a-zA-Z0-9\-_]{2,17}$/) { + } elsif ($user =~ /^[a-zA-Z0-9][a-zA-Z0-9\-_]{2,17}\z/) { last; } else { $ns->send_drawinfo ( @@ -285,7 +285,7 @@ "Ok, quitting, hope to see you again.", cf::NDI_UNIQUE | cf::NDI_RED); $pl->ns->flush; - $pl->quit_character; + cf::async { $pl->quit_character }; } }); }; @@ -350,8 +350,9 @@ our $SAVE_TIMEOUT = 20; # save players every n seconds our $SCHEDULER = cf::async_ext { + my $schedule_interval = Coro::Event->timer (after => 1, interval => $SCHEDULE_INTERVAL); while () { - Coro::Timer::sleep $SCHEDULE_INTERVAL; + $schedule_interval->next; # this weird form of iteration over values is used because # the hash changes underneath us frequently, and for