Source code: Freenet/message/QueryRestarted.java
1 package Freenet.message;
2 import Freenet.*;
3 import Freenet.node.*;
4 import Freenet.support.*;
5
6 public class QueryRestarted extends Message
7 {
8
9 public static final String messageName = "QueryRestarted";
10
11 public QueryRestarted(RawMessage m) throws InvalidMessageException
12 {
13 super(m);
14 }
15
16 public QueryRestarted(long idnum, long htl)
17 {
18 super(idnum, htl, (long)0);
19 }
20
21
22 public RawMessage toRawMessage()
23 {
24 RawMessage raw=super.toRawMessage();
25 raw.messageType="QueryRestarted";
26 raw.trailingFieldName="EndMessage";
27 return raw;
28 }
29
30
31 public MessageMemory pReceived(Node n, MessageMemory sb)
32 {
33 if (sb==null) { // already lost mm
34 return null;
35 } else {
36 if( sb instanceof KeyedMM ) {
37 KeyedMM kmm = (KeyedMM) sb;
38 if (!kmm.lastAddr.equals(source)) {
39 // Stale QueryRestarted from a node we gave up on
40 Logger.log("message/QueryRestarted.java","Stale QueryRestarted from " + source + ", expected from " + kmm.lastAddr,Logger.DEBUG);
41 return sb;
42 }
43 }
44 Callback cb = Node.timer.cancel(id);
45 try {
46 sb.replyCon = sendBack(n, sb);
47 if (!(cb instanceof RequestCB)) return sb; //WTF have you been shoving up my timer?!? :-)
48 RequestCB rcb = (RequestCB) cb;
49 Node.timer.add(id, rcb.hopsToLive * Node.timePerHop, rcb);
50 } catch (SendFailedException sfe) {
51 Logger.log("message/QueryRestarted.java","Send failed on return to " + sfe.peer,Logger.NORMAL);
52 }
53 return sb;
54 }
55 }
56
57 protected MessageMemory timeOut(Node n, MessageMemory sb)
58 {
59 Logger.log("message/QueryRestarted.java","Errant QueryRestarted message died",Logger.NORMAL);
60 return null;
61 }
62 }