+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+
+ # disconnect users
+ foreach $dxchan (DXChannel->get_all()) {
+ next if $dxchan->is_node;
+ $dxchan->disconnect unless $dxchan == $DXProt::me;
+ }
+
+ # disconnect AGW
+ AGWMsg::finish();
+
+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+ Msg->event_loop(1, 0.05);
+ DXUser::finish();
+ DXDupe::finish();
+
+ # close all databases
+ DXDb::closeall;
+
+ # close all listeners
+ for (@listeners) {
+ $_->close_server;
+ }
+
+ dbg('chan', "DXSpider version $version, build $build ended");
+ Log('cluster', "DXSpider V$version, build $build ended");
+ dbgclose();
+ Logclose();
+ unlink $lockfn;
+# $SIG{__WARN__} = $SIG{__DIE__} = sub {my $a = shift; cluck($a); };