pike.git
/
lib
/
modules
/
Protocols.pmod
/
DNS.pmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/lib/modules/Protocols.pmod/DNS.pmod:1782:
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) {
+
if (!callback) return UNDEFINED;
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;
pike.git/lib/modules/Protocols.pmod/DNS.pmod:1843:
protected private void generic_get(string d, mapping answer, int multi, int all, int type, string field, string domain, function callback, mixed ... args) {
+
if (!callback) return UNDEFINED;
if(!answer || !answer->an || !sizeof(answer->an)) { if(multi == -1 || multi >= sizeof(domains)) { // Either a request without multi (ip, or FQDN) or we have tried all // domains. callback(domain,0,@args); } else { // Multiple domain request. Try the next one... do_query(domain+"."+domains[multi], C_IN, type, generic_get, ++multi, all, type, field, domain,
pike.git/lib/modules/Protocols.pmod/DNS.pmod:2016:
string writebuf="",readbuf=""; void create() { sock=Stdio.File(); sock->async_connect(nameservers[0], 53, connectedcb); } void connectedcb(int ok) {
+
if (!callback) return;
if (!ok) {callback(domain, 0, @args); return;} sock->set_nonblocking(readcb, writecb, closecb); writebuf=sprintf("%2H",req); writecb(); } void readcb(mixed id,string data) { readbuf+=data; if (sscanf(readbuf,"%2H",string ret))