diff --git a/ethereum.go b/ethereum.go
index dd6256f4b4001e61ce2922fb9879c537edb148ab..e1fb5945c53866957a8874d4f2d22cea97d5f060 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -93,6 +93,9 @@ func (s *Ethereum) ConnectToPeer(addr string) error {
 	var alreadyConnected bool
 
 	eachPeer(s.peers, func(p *Peer, v *list.Element) {
+		if p.conn == nil {
+			return
+		}
 		phost, _, _ := net.SplitHostPort(p.conn.RemoteAddr().String())
 		ahost, _, _ := net.SplitHostPort(addr)
 
@@ -118,7 +121,7 @@ func (s *Ethereum) OutboundPeers() []*Peer {
 	outboundPeers := make([]*Peer, s.peers.Len())
 	length := 0
 	eachPeer(s.peers, func(p *Peer, e *list.Element) {
-		if !p.inbound {
+		if !p.inbound && p.conn != nil {
 			outboundPeers[length] = p
 			length++
 		}