#include "udp.h"
/*
* Support. Do we support this protocol?
*/
void incoming_request(mapping info) {
if (stringp(info["NAME"]) && stringp(info["PORTUDP"])) {
if (info["NAME"] == mud_name())
return ;
if (!NAMESERVER_CD->query_mud_info(info["NAME"]))
PING_Q->send_ping_q(info["HOSTADDRESS"], info["PORTUDP"]);
if (!info["PARAM"]) info["PARAM"] = "";
if (file_size(UDP_PATH+info["CMD"]+".c") <= 0 ||
(strlen(info["PARAM"]) &&
call_other(UDP_PATH+info["CMD"], "support_"+info["PARAM"]))) {
if (!info["PARAM"]) info["PARAM"] = "";
NAMESERVER_CD->send_udp(info["HOSTADDRESS"], info["PORTUDP"],
"@@@"+UDP_SUPPORT_A+
"||NAME:"+mud_name()+
"||PORTUDP:"+NAMESERVER_CD->query_my_port()+
"||CMD:"+info["CMD"]+
(strlen(info["PARAM"])?"||PARAM:"+info["PARAM"]:"")+
"||NOTSUPPORTED:yes"+
"||ANSWERID:"+info["ANSWERID"]+
"@@@\n");
} else
NAMESERVER_CD->send_udp(info["HOSTADDRESS"], info["PORTUDP"],
"@@@"+UDP_SUPPORT_A+
"||NAME:"+mud_name()+
"||PORTUDP:"+NAMESERVER_CD->query_my_port()+
"||CMD:"+info["CMD"]+
(strlen(info["PARAM"])?"||PARAM:"+info["PARAM"]:"")+
"||SUPPORTED:yes"+
"||ANSWERID:"+info["ANSWERID"]+
"@@@\n");
}
} /* incoming_request() */
void send_support_q(string host, mixed port, string cmd, string param) {
if (!param)
param = "";
tell_object(find_player("pinkfish"), "Got here...\n");
NAMESERVER_CD->send_udp(host, port, "@@@"+UDP_SUPPORT_Q+
"||NAME:"+mud_name()+
"||PORTUDP:"+NAMESERVER_CD->query_my_port()+
"||CMD:"+cmd+
(strlen(param)?"||PARAM:"+param:"")+
"||ANSWERID:"+this_player()->query_name()+
"@@@\n");
} /* send_support_q() */
void create() {
seteuid(getuid());
} /* create() */