MCPcopy Create free account
hub / github.com/DeNA/PacketProxy / addAnswer

Method addAnswer

src/main/java/core/org/xbill/DNS/jnamed.java:211–322  ·  view source on GitHub ↗
(Message response, Name name, int type, int dclass,
	  int iterations, int flags)

Source from the content-addressed store, hash-verified

209}
210
211byte
212addAnswer(Message response, Name name, int type, int dclass,
213 int iterations, int flags)
214{
215 SetResponse sr;
216 byte rcode = Rcode.NOERROR;
217
218 if (iterations > 6)
219 return Rcode.NOERROR;
220
221 if (type == Type.SIG || type == Type.RRSIG) {
222 type = Type.ANY;
223 flags |= FLAG_SIGONLY;
224 }
225
226 Zone zone = findBestZone(name);
227 if (zone != null)
228 sr = zone.findRecords(name, type);
229 else {
230 Cache cache = getCache(dclass);
231 sr = cache.lookupRecords(name, type, Credibility.NORMAL);
232 }
233
234 if (sr.isUnknown()) {
235 addCacheNS(response, getCache(dclass), name);
236 }
237 if (sr.isNXDOMAIN()) {
238 response.getHeader().setRcode(Rcode.NXDOMAIN);
239 if (zone != null) {
240 addSOA(response, zone);
241 if (iterations == 0)
242 response.getHeader().setFlag(Flags.AA);
243 }
244 rcode = Rcode.NXDOMAIN;
245 }
246 else if (sr.isNXRRSET()) {
247 if (zone != null) {
248 addSOA(response, zone);
249 if (iterations == 0)
250 response.getHeader().setFlag(Flags.AA);
251 }
252 }
253 else if (sr.isDelegation()) {
254 RRset nsRecords = sr.getNS();
255 addRRset(nsRecords.getName(), response, nsRecords,
256 Section.AUTHORITY, flags);
257 }
258 else if (sr.isCNAME()) {
259 CNAMERecord cname = sr.getCNAME();
260 RRset rrset = new RRset(cname);
261 addRRset(name, response, rrset, Section.ANSWER, flags);
262 if (zone != null && iterations == 0)
263 response.getHeader().setFlag(Flags.AA);
264 rcode = addAnswer(response, cname.getTarget(),
265 type, dclass, iterations + 1, flags);
266 }
267 else if (sr.isDNAME()) {
268 DNAMERecord dname = sr.getDNAME();

Callers 1

generateReplyMethod · 0.95

Calls 15

findBestZoneMethod · 0.95
findRecordsMethod · 0.95
getCacheMethod · 0.95
lookupRecordsMethod · 0.95
isUnknownMethod · 0.95
addCacheNSMethod · 0.95
isNXDOMAINMethod · 0.95
addSOAMethod · 0.95
isNXRRSETMethod · 0.95
isDelegationMethod · 0.95
getNSMethod · 0.95
addRRsetMethod · 0.95

Tested by

no test coverage detected