--- ptunnel.c_orig/ptunnel.c	2009-06-22 10:41:21.000000000 +0200
+++ ptunnel.c	2011-08-12 20:01:57.000000000 +0200
@@ -620,7 +620,11 @@ void*		pt_proxy(void *args) {
 			pc.pcap_data_buf	= malloc(pcap_buf_size);
 			pc.pcap_desc		= pcap_open_live(pcap_device, pcap_buf_size, 0 /* promiscous */, 50 /* ms */, pc.pcap_err_buf);
 			if (pc.pcap_desc) {
-				pcap_lookupnet(pcap_device, &pc.netp, &pc.netmask, pc.pcap_err_buf);
+				if (pcap_lookupnet(pcap_device, &pc.netp, &pc.netmask, pc.pcap_err_buf) == -1) {
+					
+					pt_log(kLog_error, "pcap error: %s\n", pc.pcap_err_buf);
+					pcap	= 0;
+				}
 				pt_log(kLog_verbose, "Network: %s\n", inet_ntoa(*(struct in_addr*)&pc.netp));
 				pt_log(kLog_verbose, "Netmask: %s\n", inet_ntoa(*(struct in_addr*)&pc.netmask));
 				if (pcap_compile(pc.pcap_desc, &pc.fp, pcap_filter_program, 0, pc.netp) == -1) {
@@ -633,6 +637,9 @@ void*		pt_proxy(void *args) {
 					pcap_close(pc.pcap_desc);
 					pcap	= 0;
 				}
+			} else {
+				pt_log(kLog_error, "pcap error: %s\n", pc.pcap_err_buf);
+				pcap	= 0;
 			}
 			pc.pkt_q.head	= 0;
 			pc.pkt_q.tail	= 0;
@@ -642,6 +649,7 @@ void*		pt_proxy(void *args) {
 				pt_log(kLog_error, "There were errors enabling pcap - pcap has been disabled.\n");
 				free(pc.pcap_err_buf);
 				free(pc.pcap_data_buf);
+				return 0;
 			}
 		}
 		else

