/* // Ping, by Inspiral@Tabor // Created 01/01/94 // Based on work by Deathknight@Shadowriver // This is UDP ping for the DNS System */ #include <mudlib.h> #include <net/dns.h> #include <net/services.h> #include <daemons.h> inherit DAEMON; int cmd_ping( string str ) { mapping m; string svc; if( !str || str == "" ) return notify_fail( "PING: ping <mudname>\n" ); m = (mapping) DNS_MASTER->query_mud_info(str); if (!mapp(m) || !m["HOSTADDRESS"]) { return notify_fail ("No such mud.\n"); } if( !m["PORTUDP"] ) m["PORTUDP"] = SRVC_PORT_UDP(m["PORT"]); DNS_MASTER -> do_pings( str ); SUPPORT_Q -> send_support_q( m["HOSTADDRESS"], m["PORTUDP"], "" + time(), this_player() -> query( "name" ) ); write( "Ping request sent to '" + str + "'.\n" ); return 1; } void support_q_callback( mixed info ) { if( !mapp( info ) ) return; message( "info", "Ping response received from " + info["ALIAS"] + " in " + (time() - to_int(info["CMD"])) + " seconds.\n", find_player( info["PARAM"] ) ); } int help() { write( "Command: ping\n" "Syntax : ping <mudname>\n\n" "This command sends a ping request to the specified mud, and if\n" "the mud responds, displays an approximate travel time. Note that\n" "timeouts and lost requests are not reported back to the user.\n" ); return 1; }