X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Ftcpconns.c;h=bf07a2a28b99f69c6c135bec7a1fb55872b7161a;hb=67a330cb7ba890a03142a089ed1aebea8842072f;hp=6351c7b68853390905b35b327a101d4af58ee960;hpb=82e27678f8972d2625b466e7e7ba9daaa6395c98;p=collectd.git diff --git a/src/tcpconns.c b/src/tcpconns.c index 6351c7b6..bf07a2a2 100644 --- a/src/tcpconns.c +++ b/src/tcpconns.c @@ -386,18 +386,18 @@ static void conn_reset_port_entry (void) /* If this entry was created while reading the files (ant not when handling * the configuration) remove it now. */ if ((pe->flags & (PORT_COLLECT_LOCAL - | PORT_COLLECT_REMOTE - | PORT_IS_LISTENING)) == 0) + | PORT_COLLECT_REMOTE + | PORT_IS_LISTENING)) == 0) { port_entry_t *next = pe->next; DEBUG ("tcpconns plugin: Removing temporary entry " - "for listening port %"PRIu16, pe->port); + "for listening port %"PRIu16, pe->port); if (prev == NULL) - port_list_head = next; + port_list_head = next; else - prev->next = next; + prev->next = next; sfree (pe); pe = next; @@ -409,6 +409,7 @@ static void conn_reset_port_entry (void) memset (pe->count_remote, '\0', sizeof (pe->count_remote)); pe->flags &= ~PORT_IS_LISTENING; + prev = pe; pe = pe->next; } } /* void conn_reset_port_entry */ @@ -930,7 +931,9 @@ static int conn_read (void) while (next != head) { /* Read the pcb pointed to by `next' into `inpcb' */ - kread ((u_long) next, &inpcb, sizeof (inpcb)); + status = kread ((u_long) next, &inpcb, sizeof (inpcb)); + if (status != 0) + return (-1); /* Advance `next' */ next = (struct inpcb *)CIRCLEQ_NEXT (&inpcb, inp_queue); @@ -948,7 +951,9 @@ static int conn_read (void) continue; #endif - kread ((u_long) inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb)); + status = kread ((u_long) inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb)); + if (status != 0) + return (-1); conn_handle_ports (ntohs(inpcb.inp_lport), ntohs(inpcb.inp_fport), tcpcb.t_state); } /* while (next != head) */