--- libnids-1.24/src/libnids.c 2010-03-02 00:43:25.000000000 +0330 +++ libnids-1.24-mine/src/libnids.c 2012-05-07 20:46:52.137492412 +0430 @@ -688,6 +688,7 @@ int nids_run() } START_CAP_QUEUE_PROCESS_THREAD(); /* threading... */ pcap_loop(desc, -1, (pcap_handler) nids_pcap_handler, 0); + return 0; /* FIXME: will this code ever be called? Don't think so - mcree */ STOP_CAP_QUEUE_PROCESS_THREAD(); nids_exit(); @@ -714,8 +715,10 @@ void nids_exit() scan_exit(); strcpy(nids_errbuf, "loop: "); strncat(nids_errbuf, pcap_geterr(desc), sizeof nids_errbuf - 7); - if (!nids_params.pcap_desc) - pcap_close(desc); + if (!nids_params.pcap_desc) { + pcap_breakloop(desc); + pcap_close(desc); + } desc = NULL; free(ip_procs);