From 794289f118b717f1931b5ac811430d37e3531a26 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Wed, 10 Jun 2015 07:17:32 +0900 Subject: server: server goroutin can't access to outstanding directly This could lead to a deadlock. Signed-off-by: FUJITA Tomonori --- server/server.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'server/server.go') diff --git a/server/server.go b/server/server.go index d87bb742..e15e1360 100644 --- a/server/server.go +++ b/server/server.go @@ -510,7 +510,11 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *fsmMsg, incoming chan * case *bgp.MessageError: msgs = append(msgs, newSenderMsg(peer, []*bgp.BGPMessage{bgp.NewBGPNotificationMessage(m.TypeCode, m.SubTypeCode, m.Data)})) case *bgp.BGPMessage: - pathList, update := peer.handleBGPmessage(m) + pathList, update, msgList := peer.handleBGPmessage(m) + if len(msgList) > 0 { + msgs = append(msgs, newSenderMsg(peer, msgList)) + break + } if update == false { if len(pathList) > 0 { msgList := table.CreateUpdateMsgFromPaths(pathList) -- cgit v1.2.3