pike.git / lib / modules / Protocols.pmod / DNS.pmod

version» Context lines:

pike.git/lib/modules/Protocols.pmod/DNS.pmod:1: - // $Id: DNS.pmod,v 1.76 2003/04/22 22:18:11 marcus Exp $ + // $Id: DNS.pmod,v 1.77 2003/07/30 15:18:08 anders Exp $   // Not yet finished -- Fredrik Hubinette      //! Domain Name System   //! RFC 1035      #pike __REAL_VERSION__      constant NOERROR=0;   constant FORMERR=1;   constant SERVFAIL=2;
pike.git/lib/modules/Protocols.pmod/DNS.pmod:1093:    }       send(nameservers[nsno],53,r->req);    call_out(retry,RETRY_DELAY,r,nsno+1);    }       void do_query(string domain, int cl, int type,    function(string,mapping,mixed...:void) callback,    mixed ... args)    { -  for(int e=next_client ? 5 : 256;e>=0;e--) +  for(int e=next_client ? 100 : 256;e>=0;e--)    {    int lid = random(65536);    if(!catch { requests[lid]++; })    {    string req=low_mkquery(lid,domain,cl,type);       object r=Request();    r->req=req;    r->domain=domain;    r->callback=callback;
pike.git/lib/modules/Protocols.pmod/DNS.pmod:1235:    void create(void|string|array(string) server, void|string|array(string) domain)    {    if(!udp::bind(0))    error( "DNS: failed to bind a port.\n" );       udp::set_read_callback(rec_data);    ::create(server,domain);    }   };    +  + async_client global_async_client; +  + #define GAC(X) \ + void async_##X( string host, function callback, mixed ... args ) \ + { \ +  if( !global_async_client ) \ +  global_async_client = async_client(); \ +  global_async_client->X(host,callback,@args); \ + } +  + GAC(ip_to_host); + //! method void async_ip_to_host(string ip, function cb, mixed ... cba) +  + GAC(host_to_ip); + //! method void async_host_to_ip(string host, function cb, mixed ... cba) +  + GAC(get_mx_all); + //! method void async_get_mx_all(string host, function cb, mixed ... cba) +  + GAC(get_mx); + //! method void async_get_mx(string host, function cb, mixed ... cba) +  +  + client global_client; +  + #define GC(X) \ + mixed X( string host ) \ + { \ +  if( !global_client ) \ +  global_client = client(); \ +  return global_client->X(host); \ + } +  + GC(gethostbyname); + //! method array gethostbyname(string host) +  + GC(gethostbyaddr); + //! method array gethostbyaddr(string host) +  + GC(get_mx); + //! method string get_mx(string host) +  + GC(get_primary_mx); + //! method string get_primary_mx(string host)