diff --git a/bgpd/bgp_io.c b/bgpd/bgp_io.c index e9b0f9e46a..9b5a31f289 100644 --- a/bgpd/bgp_io.c +++ b/bgpd/bgp_io.c @@ -111,6 +111,7 @@ void bgp_reads_off(struct peer *peer) thread_cancel_async(fpt->master, &peer->t_read, NULL); THREAD_OFF(peer->t_process_packet); + THREAD_OFF(peer->t_process_packet_error); UNSET_FLAG(peer->thread_flags, PEER_THREAD_READS_ON); } @@ -208,7 +209,7 @@ static int bgp_process_reads(struct thread *thread) * specific state change from 'bgp_read'. */ thread_add_event(bm->master, bgp_packet_process_error, - peer, code, NULL); + peer, code, &peer->t_process_packet_error); } while (more) { diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 867062a88b..d39743a152 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -1415,6 +1415,7 @@ struct peer { struct thread *t_gr_stale; struct thread *t_generate_updgrp_packets; struct thread *t_process_packet; + struct thread *t_process_packet_error; struct thread *t_refresh_stalepath; /* Thread flags. */