Skip to content

Commit

Permalink
fix memory leak bug
Browse files Browse the repository at this point in the history
  • Loading branch information
bigeagle committed Jul 29, 2013
1 parent faac175 commit b2b77e4
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions hop/protocol.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,14 @@ func unpackHopPacket(b []byte) (*HopPacket, error) {
lst := len(buf) - 1
p.opcode = uint8(buf[lst])
p.frame = buf[:lst]
buf = nil
return p, nil
}

// gohop Peer is a record of a peer's available UDP addrs
type HopPeer struct {
id uint32
addrs map[net.Addr]int
addrs map[string]int
_addrs_lst []net.Addr // i know it's ugly!
inited bool // whether a connection is initialized
}
Expand All @@ -66,25 +67,27 @@ func newHopPeer(id uint32, addr net.Addr, idx int) *HopPeer {
hp := new(HopPeer)
hp.id = id
hp._addrs_lst = make([]net.Addr, 0)
hp.addrs = make(map[net.Addr]int)
hp.addrs = make(map[string]int)
hp.inited = false

hp._addrs_lst = append(hp._addrs_lst, addr)
hp.addrs[addr] = idx
hp.addrs[addr.String()] = idx

return hp
}

func (h *HopPeer) addr() (net.Addr, int, bool) {
addr := randAddr(h._addrs_lst)
idx, ok := h.addrs[addr]
idx, ok := h.addrs[addr.String()]

return addr, idx, ok
}

func (h *HopPeer) insertAddr(addr net.Addr, idx int) {
if _, found := h.addrs[addr]; !found {
h.addrs[addr] = idx
k := addr.String()
if _, found := h.addrs[k]; !found {
h.addrs[k] = idx
h._addrs_lst = append(h._addrs_lst, addr)
//logger.Info("%v %d", addr, len(h._addrs_lst))
}
}

0 comments on commit b2b77e4

Please sign in to comment.