--- netcam.c.orig	2005-05-23 23:03:00.000000000 +0200
+++ netcam.c	2005-06-23 10:52:19.000000000 +0200
@@ -1023,7 +1023,7 @@
 {
 	struct netcam_context *netcam;
 	struct jpeg_decompress_struct cinfo;
-	struct jpeg_error_mgr jerr;
+	struct my_error_mgr jerr;
 	char *userpass;
 	int which, hretries, ret;
 	
@@ -1108,7 +1108,17 @@
 			goto start_retry;
 		}
 	}
-
+	cinfo.err = jpeg_std_error(&jerr.pub);
+	jerr.pub.error_exit = my_error_exit;
+	hretries = MAX_HEADER_RETRIES;
+
+	if (setjmp(jerr.setjmp_buffer)) {
+    		const char msg[] = "netcam: jpeglib read header failed";
+		syslog(LOG_ERR, "[%d] %s", cnt->threadnr, msg);
+		printf("[%d] %s\n", cnt->threadnr, msg);
+		jpeg_destroy_decompress(&cinfo);
+		if (!netcam->caps.streaming || !(--hretries)) ret = -1;
+	}
 	if (ret == 0) {
 		netcam->state = STATE_RUN;
 
@@ -1117,7 +1127,6 @@
 		pthread_cond_signal(&netcam->which_cond);
 		pthread_mutex_unlock(&netcam->mutex);
 
-		cinfo.err = jpeg_std_error(&jerr);
 		jpeg_create_decompress(&cinfo);
 		jpeg_memory_src(&cinfo,	netcam->image[which].buffer.ptr,
 		                netcam->image[which].buffer.used);
