--- channels/chan_zap.c	Tue Mar  4 19:48:59 2003
+++ channels/chan_zap.c.busycount	Tue Mar  4 19:39:48 2003
@@ -161,6 +161,8 @@
 
 static int busydetect = 0;
 
+static int busycount = 3;
+
 static int callprogress = 0;
 
 static char accountcode[20] = "";
@@ -398,6 +400,7 @@
 	int outgoing;
 	int dnd;
 	int busydetect;
+	int busycount;
 	int callprogress;
 	struct ast_dsp *dsp;
 	int cref;					/* Call reference number */
@@ -3326,6 +3329,9 @@
 				if (i->dsp) {
 					ast_dsp_set_features(i->dsp, features);
 					ast_dsp_digitmode(i->dsp, DSP_DIGITMODE_DTMF | i->dtmfrelax);
+					if (i->busydetect && CANBUSYDETECT(i)) {
+						ast_dsp_set_busy_count(i->dsp, i->busycount);
+						}
 				}
 			}
 		}
@@ -4685,6 +4691,7 @@
 		tmp->echocancel = echocancel;
 		tmp->echocanbridged = echocanbridged;
 		tmp->busydetect = busydetect;
+		tmp->busycount = busycount;
 		tmp->callprogress = callprogress;
 		tmp->cancallforward = cancallforward;
 		tmp->dtmfrelax = relaxdtmf;
@@ -6086,6 +6093,8 @@
 			echocanbridged = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "busydetect")) {
 			busydetect = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "busycount")) {
+			busycount = atoi(v->value);
 		} else if (!strcasecmp(v->name, "callprogress")) {
 			callprogress = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "echocancel")) {
@@ -6404,6 +6413,7 @@
 	stripmsd = 0;
 	callwaiting = 0;
 	busydetect = 0;
+	busycount = 3;
 	callprogress = 0;
 	callwaitingcallerid = 0;
 	hidecallerid = 0;
@@ -6516,6 +6526,8 @@
 			transfer = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "busydetect")) {
 			busydetect = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "busycount")) {
+			busycount = atoi(v->value);
 		} else if (!strcasecmp(v->name, "callprogress")) {
 			callprogress = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "hidecallerid")) {
