#include <udp.h> #ifdef ZEBEDEE #include <defs.h> #elif !defined(DATE) #define DATE ctime(time())[4..15] #endif void udp_reply(mapping data) { if (data[RECIPIENT]) { object ob; string err; /* If recipient is a player name, pass the message to them. */ if (ob = find_player(data[RECIPIENT])) { tell_object(ob, "\n" + data[DATA]); return; } // Otherwise send it to udp_reply() in the recipient. // Note: We must send a copy as it may be changed by the recipient. // We must never alter the mapping passed to us by the inetd. if (err = catch(data[RECIPIENT]->udp_reply(copy_mapping(data)))) log_file(LOG_FILE, DATE + ": Error in file: " + data[RECIPIENT] + "\n" + err + "\n"); return; } switch(data[REQUEST]) { case "ping": /* Ignore system ping replies. */ return; default: /* Log replies to the system. (ie. No RECIPIENT) */ if (data[DATA]) log_file(LOG_FILE, DATE + ": Reply from " + data[NAME] + "\n" + data[DATA] + "\n"); return; } }