void SendQuery(SimpleResolverEventArgs args, DnsQuery query, bool add_it) { // TODO: not sure about reusing IDs when add_it == false int count = 0; if (add_it) { do { query.Header.ID = (ushort)new Random().Next(1, 65534); if (count > 500) { throw new InvalidOperationException("Too many pending queries (or really bad luck)"); } } while (AddQuery(query, args) == false); args.QueryID = query.Header.ID; } else { query.Header.ID = args.QueryID; } if (args.Timer == null) { args.Timer = new Timer(timeout_cb, args, 5000, Timeout.Infinite); } else { args.Timer.Change(5000, Timeout.Infinite); } client.BeginSend(query.Packet, 0, query.Length, SocketFlags.None, null, null); }
bool AddQuery(DnsQuery query, SimpleResolverEventArgs args) { lock (queries) { if (queries.ContainsKey(query.Header.ID)) { return(false); } queries [query.Header.ID] = args; } return(true); }
void SendQuery (SimpleResolverEventArgs args, DnsQuery query, bool add_it) { // TODO: not sure about reusing IDs when add_it == false int count = 0; if (add_it) { do { query.Header.ID = (ushort)new Random().Next(1, 65534); if (count > 500) throw new InvalidOperationException ("Too many pending queries (or really bad luck)"); } while (AddQuery (query, args) == false); args.QueryID = query.Header.ID; } else { query.Header.ID = args.QueryID; } if (args.Timer == null) args.Timer = new Timer (timeout_cb, args, 5000, Timeout.Infinite); else args.Timer.Change (5000, Timeout.Infinite); client.BeginSend (query.Packet, 0, query.Length, SocketFlags.None, null, null); }
bool AddQuery (DnsQuery query, SimpleResolverEventArgs args) { lock (queries) { if (queries.ContainsKey (query.Header.ID)) return false; queries [query.Header.ID] = args; } return true; }
void SendPTRQuery(SimpleResolverEventArgs args, bool add_it) { DnsQuery query = GetQuery(GetPTRName(args.PTRAddress), DnsQType.PTR, DnsQClass.IN); SendQuery(args, query, add_it); }
void SendAQuery(SimpleResolverEventArgs args, string host, bool add_it) { DnsQuery query = GetQuery(host, DnsQType.A, DnsQClass.IN); SendQuery(args, query, add_it); }