#include "udp.h" /* * Incoming mudlist query. They want to know which muds we know. * We will only tell them about the CD ones we know and not the * mudos ones... */ string *build_mudlist(mapping muds) { string *names, *ret; int i, pos; names = keys(muds); ret = ({ "" }); for (i=0;i<sizeof(names);i++) { if (!mapp(muds[names[i]])) continue; ret[pos] += "||"+i+":"+ "|NAME:"+names[i]+ "|HOST:"+muds[names[i]]["HOST"]+ "|HOSTADDRESS:"+muds[names[i]]["HOSTADDRESS"]+ "|PORT:"+muds[names[i]]["PORT"]+ "|PORTUDP:"+muds[names[i]]["PORTUDP"]; if (strlen(ret[pos]) > 256) { ret += ({ "" }); pos++; } } return ret; } /* build_mudlist() */ void send_mudlist_q(string host, string port) { NAMESERVER_CD->send_udp(host, port, "@@@"+UDP_MUDLIST_Q+ "||NAME:"+mud_name()+ "||PORTUDP:"+NAMESERVER_CD->query_my_port()+ "@@@\n"); } /* send_mudlist_q() */ void incoming_request(mapping info) { int i; string *bits; if (info["PORTUDP"]) { bits = build_mudlist((mapping)NAMESERVER_CD->query_known_muds()); for (i=0;i<sizeof(bits);i++) NAMESERVER_CD->send_udp(info["HOSTADDRESS"], info["PORTUDP"], "@@@"+UDP_MUDLIST_A+ bits[i]+ "@@@\n"); } } /* incoming_request() */ void create() { seteuid(getuid()); } /* create() */