(Name name, Message query, TSIG tsig, TSIGRecord qtsig, Socket s)
| 322 | } |
| 323 | |
| 324 | byte [] |
| 325 | doAXFR(Name name, Message query, TSIG tsig, TSIGRecord qtsig, Socket s) { |
| 326 | Zone zone = (Zone) znames.get(name); |
| 327 | boolean first = true; |
| 328 | if (zone == null) |
| 329 | return errorMessage(query, Rcode.REFUSED); |
| 330 | Iterator it = zone.AXFR(); |
| 331 | try { |
| 332 | DataOutputStream dataOut; |
| 333 | dataOut = new DataOutputStream(s.getOutputStream()); |
| 334 | int id = query.getHeader().getID(); |
| 335 | while (it.hasNext()) { |
| 336 | RRset rrset = (RRset) it.next(); |
| 337 | Message response = new Message(id); |
| 338 | Header header = response.getHeader(); |
| 339 | header.setFlag(Flags.QR); |
| 340 | header.setFlag(Flags.AA); |
| 341 | addRRset(rrset.getName(), response, rrset, |
| 342 | Section.ANSWER, FLAG_DNSSECOK); |
| 343 | if (tsig != null) { |
| 344 | tsig.applyStream(response, qtsig, first); |
| 345 | qtsig = response.getTSIG(); |
| 346 | } |
| 347 | first = false; |
| 348 | byte [] out = response.toWire(); |
| 349 | dataOut.writeShort(out.length); |
| 350 | dataOut.write(out); |
| 351 | } |
| 352 | } |
| 353 | catch (IOException ex) { |
| 354 | System.out.println("AXFR failed"); |
| 355 | } |
| 356 | try { |
| 357 | s.close(); |
| 358 | } |
| 359 | catch (IOException ex) { |
| 360 | } |
| 361 | return null; |
| 362 | } |
| 363 | |
| 364 | /* |
| 365 | * Note: a null return value means that the caller doesn't need to do |
no test coverage detected