diff --git a/routing/dht/pb/message.go b/routing/dht/pb/message.go
index 919841f04..ba3104ca2 100644
--- a/routing/dht/pb/message.go
+++ b/routing/dht/pb/message.go
@@ -107,14 +107,15 @@ func (m *Message_Peer) Addresses() []ma.Multiaddr {
 		return nil
 	}
 
-	var err error
-	maddrs := make([]ma.Multiaddr, len(m.Addrs))
-	for i, addr := range m.Addrs {
-		maddrs[i], err = ma.NewMultiaddrBytes(addr)
+	maddrs := make([]ma.Multiaddr, 0, len(m.Addrs))
+	for _, addr := range m.Addrs {
+		maddr, err := ma.NewMultiaddrBytes(addr)
 		if err != nil {
-			log.Debugf("error decoding Multiaddr for peer: %s", m.GetId())
+			log.Warningf("error decoding Multiaddr for peer: %s", m.GetId())
 			continue
 		}
+
+		maddrs = append(maddrs, maddr)
 	}
 	return maddrs
 }
diff --git a/routing/dht/pb/message_test.go b/routing/dht/pb/message_test.go
new file mode 100644
index 000000000..71f4abdc5
--- /dev/null
+++ b/routing/dht/pb/message_test.go
@@ -0,0 +1,15 @@
+package dht_pb
+
+import (
+	"testing"
+)
+
+func TestBadAddrsDontReturnNil(t *testing.T) {
+	mp := new(Message_Peer)
+	mp.Addrs = [][]byte{[]byte("NOT A VALID MULTIADDR")}
+
+	addrs := mp.Addresses()
+	if len(addrs) > 0 {
+		t.Fatal("shouldnt have any multiaddrs")
+	}
+}