diff --git a/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java b/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java index e61748ab9..26b28a76b 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java +++ b/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java @@ -16,28 +16,27 @@ class ReliabilityLayer implements ReadHandler, WriteHandler { Logger.getLogger(ReliabilityLayer.class.getName()); private final WriteHandler writeHandler; - private final Receiver receiver; - private final SlipDecoder decoder; - private final ReceiverInputStream inputStream; - private final SenderOutputStream outputStream; private final BlockingQueue writes; - private volatile boolean valid = true; + private volatile Receiver receiver = null; + private volatile SlipDecoder decoder = null; + private volatile ReceiverInputStream inputStream = null; + private volatile SenderOutputStream outputStream = null; private volatile Thread writer = null; + private volatile boolean valid = true; ReliabilityLayer(WriteHandler writeHandler) { this.writeHandler = writeHandler; - // FIXME: Don't let references to this escape the constructor + writes = new LinkedBlockingQueue(); + } + + void init() { SlipEncoder encoder = new SlipEncoder(this); Sender sender = new Sender(encoder); receiver = new Receiver(sender); decoder = new SlipDecoder(receiver); inputStream = new ReceiverInputStream(receiver); outputStream = new SenderOutputStream(sender); - writes = new LinkedBlockingQueue(); - } - - void init() { writer = new Thread("ReliabilityLayer") { @Override public void run() {