diff --git a/protocols/bgp/server/update_sender.go b/protocols/bgp/server/update_sender.go
index 078faebfde101b8d774a8785ad0a71c9dce3b159..f61036f2bb0311f9cc2c878e0b9123ff0c4ba3cf 100644
--- a/protocols/bgp/server/update_sender.go
+++ b/protocols/bgp/server/update_sender.go
@@ -39,6 +39,7 @@ func newUpdateSender(fsm *FSM) *UpdateSender {
 		fsm:       fsm,
 		iBGP:      fsm.peer.localASN == fsm.peer.peerASN,
 		destroyCh: make(chan struct{}),
+		toSend:    make(map[string]*pathPfxs),
 	}
 }
 
@@ -80,7 +81,6 @@ func (u *UpdateSender) sender() {
 	var err error
 	var pathAttrs *packet.PathAttribute
 	var budget int
-	var nlri *packet.NLRI
 
 	for {
 		select {
@@ -102,7 +102,7 @@ func (u *UpdateSender) sender() {
 			updatesPrefixes := make([][]bnet.Prefix, 1)
 			prefixes := make([]bnet.Prefix, 1)
 			for _, pfx := range pathNLRIs.pfxs {
-				budget -= int(packet.BytesInAddr(nlri.Pfxlen)) - 5
+				budget -= int(packet.BytesInAddr(pfx.Pfxlen())) - 5
 				if budget < 0 {
 					updatesPrefixes = append(updatesPrefixes, prefixes)
 					prefixes = make([]bnet.Prefix, 1)