diff --git a/core/pom.xml b/core/pom.xml
index 9b1809161..18910d874 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -162,11 +162,11 @@
derby
-
- io.netty
- netty
- 3.3.1.Final
-
+
+ io.netty
+ netty
+ 3.3.1.Final
+
com.madgag
diff --git a/core/src/main/java/com/google/bitcoin/core/Peer.java b/core/src/main/java/com/google/bitcoin/core/Peer.java
index e55bf516a..b9d3c3abd 100644
--- a/core/src/main/java/com/google/bitcoin/core/Peer.java
+++ b/core/src/main/java/com/google/bitcoin/core/Peer.java
@@ -16,22 +16,20 @@
package com.google.bitcoin.core;
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.*;
-import java.util.concurrent.*;
-
-import org.jboss.netty.channel.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.google.bitcoin.store.BlockStore;
import com.google.bitcoin.store.BlockStoreException;
import com.google.bitcoin.utils.EventListenerInvoker;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
+import org.jboss.netty.channel.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.ConnectException;
+import java.net.InetSocketAddress;
+import java.util.*;
+import java.util.concurrent.*;
/**
* A Peer handles the high level communication with a BitCoin node.
@@ -167,7 +165,7 @@ public class Peer {
throws Exception {
Message m = (Message)e.getMessage();
- // Allow event listeners to filter the message stream. Listeners are allowed to drop messages by 178 synchronized (listener) {
+ // Allow event listeners to filter the message stream. Listeners are allowed to drop messages by
// returning null.
for (PeerEventListener listener : eventListeners) {
synchronized (listener) {
diff --git a/core/src/main/java/com/google/bitcoin/core/PeerGroup.java b/core/src/main/java/com/google/bitcoin/core/PeerGroup.java
index 7668e7564..305094e78 100644
--- a/core/src/main/java/com/google/bitcoin/core/PeerGroup.java
+++ b/core/src/main/java/com/google/bitcoin/core/PeerGroup.java
@@ -22,7 +22,6 @@ import com.google.bitcoin.discovery.PeerDiscovery;
import com.google.bitcoin.discovery.PeerDiscoveryException;
import com.google.bitcoin.utils.EventListenerInvoker;
import com.google.common.base.Preconditions;
-
import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.*;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
@@ -332,8 +331,9 @@ public class PeerGroup {
running = true;
this.peerGroupThread.start();
}
-
- void mockStart(PeerGroupThread peerGroupThread) {
+
+ // Visible for testing.
+ synchronized void mockStart(PeerGroupThread peerGroupThread) {
this.peerGroupThread = peerGroupThread;
running = true;
}
@@ -362,7 +362,7 @@ public class PeerGroup {
*
* @return a Future that can be used to wait for the async broadcast to complete.
*/
- public Future broadcastTransaction(final Transaction tx) {
+ public synchronized Future broadcastTransaction(final Transaction tx) {
FutureTask future = new FutureTask(new Runnable() {
public void run() {
// This is run with the peer group already locked.
diff --git a/examples/src/main/java/com/google/bitcoin/examples/PrintPeers.java b/examples/src/main/java/com/google/bitcoin/examples/PrintPeers.java
index 6bb5b265e..4db4ca504 100644
--- a/examples/src/main/java/com/google/bitcoin/examples/PrintPeers.java
+++ b/examples/src/main/java/com/google/bitcoin/examples/PrintPeers.java
@@ -16,18 +16,6 @@
package com.google.bitcoin.examples;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.util.ArrayList;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import org.jboss.netty.bootstrap.ClientBootstrap;
-import org.jboss.netty.channel.*;
-import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
-
import com.google.bitcoin.core.Message;
import com.google.bitcoin.core.NetworkParameters;
import com.google.bitcoin.core.TCPNetworkConnection;
@@ -35,6 +23,17 @@ import com.google.bitcoin.core.VersionMessage;
import com.google.bitcoin.discovery.DnsDiscovery;
import com.google.bitcoin.discovery.IrcDiscovery;
import com.google.bitcoin.discovery.PeerDiscoveryException;
+import org.jboss.netty.bootstrap.ClientBootstrap;
+import org.jboss.netty.channel.*;
+import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
/**
* Prints a list of IP addresses connected to the rendezvous point on the LFnet IRC channel.
@@ -110,7 +109,7 @@ public class PrintPeers {
TCPNetworkConnection conn =
new TCPNetworkConnection(params, new VersionMessage(params, 0));
- pipeline.addLast("codec", conn);
+ pipeline.addLast("codec", conn.getHandler());
pipeline.addLast("peer", new SimpleChannelHandler() {
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
Message m = (Message)e.getMessage();