diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2018-04-21 03:55:44 -0400 |
|---|---|---|
| committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2018-05-29 19:06:16 +0000 |
| commit | 92be6487a4001a596eb9dd4a4378fbed95e64bdc (patch) | |
| tree | 498689f5a32e65239f27837d19d26fe3e76a98d7 /zebra/zserv.c | |
| parent | 329e35dab8e11298b3d93ae53335063d21492972 (diff) | |
zebra: fix some memory errors, scheduling bugs
* Add doc comments explaining hairy bits of thread lifecycle
* Remove t_suicide as it no longer makes sense
* Remove client double-free
* Remove unnecessary THREAD_OFF being used in incorrect pthread context
* Eliminate unnecessary racey access to client's obuf_fifo
* Ensure zserv_process_messages() reschedules itself if it has not
finished its work
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'zebra/zserv.c')
| -rw-r--r-- | zebra/zserv.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/zebra/zserv.c b/zebra/zserv.c index 625174e241..fa5299850c 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -109,6 +109,14 @@ static void zebra_client_free(struct zserv *client) assert(!client->t_read); assert(!client->t_write); + /* + * Ensure these have been nulled. This does not equate to the + * associated task(s) being scheduled or unscheduled on the client + * pthread's threadmaster. + */ + assert(!client->t_read); + assert(!client->t_write); + /* Close file descriptor. */ if (client->sock) { unsigned long nroutes; |
