[asterisk-commits] tilghman: trunk r227276 - /trunk/channels/chan_mgcp.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Nov 3 11:56:44 CST 2009


Author: tilghman
Date: Tue Nov  3 11:56:41 2009
New Revision: 227276

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=227276
Log:
Code guidelines fixes only

Modified:
    trunk/channels/chan_mgcp.c

Modified: trunk/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_mgcp.c?view=diff&rev=227276&r1=227275&r2=227276
==============================================================================
--- trunk/channels/chan_mgcp.c (original)
+++ trunk/channels/chan_mgcp.c Tue Nov  3 11:56:41 2009
@@ -210,7 +210,8 @@
 AST_MUTEX_DEFINE_STATIC(monlock);
 
 /*! This is the thread for the monitor which checks for input on the channels
-    which are not currently in use. */
+ *  which are not currently in use.
+ */
 static pthread_t monitor_thread = AST_PTHREADT_NULL;
 
 static int restart_monitor(void);
@@ -226,9 +227,10 @@
 
 static struct sched_context *sched;
 static struct io_context *io;
-/*! The private structures of the  mgcp channels are linked for
-  ! selecting outgoing channels */
-   
+/*! The private structures of the mgcp channels are linked for
+ * selecting outgoing channels
+ */
+
 #define MGCP_MAX_HEADERS	64
 #define MGCP_MAX_LINES		64
 
@@ -276,20 +278,20 @@
 #define SUB_ALT  1
 
 struct mgcp_subchannel {
-	/*! subchannel magic string. 
-	   Needed to prove that any subchannel pointer passed by asterisk 
+	/*! subchannel magic string.
+	   Needed to prove that any subchannel pointer passed by asterisk
 	   really points to a valid subchannel memory area.
 	   Ugly.. But serves the purpose for the time being.
 	 */
 #define MGCP_SUBCHANNEL_MAGIC "!978!"
-	char magic[6]; 
+	char magic[6];
 	ast_mutex_t lock;
 	int id;
 	struct ast_channel *owner;
 	struct mgcp_endpoint *parent;
 	struct ast_rtp_instance *rtp;
 	struct sockaddr_in tmpdest;
-	char txident[80]; /*! \todo FIXME txident is replaced by rqnt_ident in endpoint. 
+	char txident[80]; /*! \todo FIXME txident is replaced by rqnt_ident in endpoint.
 			This should be obsoleted */
 	char cxident[80];
 	char callid[80];
@@ -397,7 +399,7 @@
 /* Wildcard endpoint name */
 	char wcardep[30];
 	struct mgcp_message *msgs; /*!< gw msg queue */
-	ast_mutex_t msgs_lock;     /*!< queue lock */  
+	ast_mutex_t msgs_lock;     /*!< queue lock */
 	int retransid;             /*!< retrans timer id */
 	int delme;                 /*!< needed for reload */
 	int realtime;
@@ -425,7 +427,7 @@
 static int transmit_connection_del(struct mgcp_subchannel *sub);
 static int transmit_audit_endpoint(struct mgcp_endpoint *p);
 static void start_rtp(struct mgcp_subchannel *sub);
-static void handle_response(struct mgcp_endpoint *p, struct mgcp_subchannel *sub,  
+static void handle_response(struct mgcp_endpoint *p, struct mgcp_subchannel *sub,
                             int result, unsigned int ident, struct mgcp_request *resp);
 static void dump_cmd_queues(struct mgcp_endpoint *p, struct mgcp_subchannel *sub);
 static char *mgcp_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
@@ -467,7 +469,7 @@
 	.send_digit_begin = mgcp_senddigit_begin,
 	.send_digit_end = mgcp_senddigit_end,
 	.bridge = ast_rtp_instance_bridge,
- 	.func_channel_read = acf_channel_read,
+	.func_channel_read = acf_channel_read,
 };
 
 static void mwi_event_cb(const struct ast_event *event, void *userdata)
@@ -526,7 +528,7 @@
 		ast_rtp_instance_destroy(sub->rtp);
 		sub->rtp = NULL;
 	}
-	dump_cmd_queues(NULL, sub); /* SC */
+	dump_cmd_queues(NULL, sub);
 	return 0;
 }
 
@@ -536,7 +538,7 @@
 	int res;
 	if (gw->addr.sin_addr.s_addr)
 		res=sendto(mgcpsock, data, len, 0, (struct sockaddr *)&gw->addr, sizeof(struct sockaddr_in));
-	else 
+	else
 		res=sendto(mgcpsock, data, len, 0, (struct sockaddr *)&gw->defaddr, sizeof(struct sockaddr_in));
 	if (res != len) {
 		ast_log(LOG_WARNING, "mgcp_xmit returned %d: %s\n", res, strerror(errno));
@@ -548,9 +550,7 @@
 {
 	struct mgcp_endpoint *p = sub->parent;
 	int res;
-	if (mgcpdebug) {
-		ast_verbose("Retransmitting:\n%s\n to %s:%d\n", resp->buf, ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
-	}
+	ast_debug(1, "Retransmitting:\n%s\n to %s:%d\n", resp->buf, ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
 	res = __mgcp_xmit(p->parent, resp->buf, resp->len);
 	if (res > 0)
 		res = 0;
@@ -561,9 +561,7 @@
 {
 	struct mgcp_endpoint *p = sub->parent;
 	int res;
-	if (mgcpdebug) {
-		ast_verbose("Transmitting:\n%s\n to %s:%d\n", req->data, ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
-	}
+	ast_debug(1, "Transmitting:\n%s\n to %s:%d\n", req->data, ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
 	res = __mgcp_xmit(p->parent, req->data, req->len);
 	if (res > 0)
 		res = 0;
@@ -576,27 +574,24 @@
 	struct mgcp_message *cur, *q = NULL, *w, *prev;
 
 	ast_mutex_lock(&gw->msgs_lock);
-	prev = NULL, cur = gw->msgs;
-	while (cur) {
+	for (prev = NULL, cur = gw->msgs; cur; prev = cur, cur = cur->next) {
 		if (!p || cur->owner_ep == p) {
-			if (prev)
+			if (prev) {
 				prev->next = cur->next;
-			else
+			} else {
 				gw->msgs = cur->next;
-
-			ast_log(LOG_NOTICE, "Removing message from %s transaction %u\n", 
+			}
+
+			ast_log(LOG_NOTICE, "Removing message from %s transaction %u\n",
 				gw->name, cur->seqno);
 
 			w = cur;
-			cur = cur->next;
 			if (q) {
 				w->next = q;
 			} else {
 				w->next = NULL;
 			}
 			q = w;
-		} else {
-			prev = cur, cur=cur->next;
 		}
 	}
 	ast_mutex_unlock(&gw->msgs_lock);
@@ -610,7 +605,7 @@
 
 static void mgcp_queue_frame(struct mgcp_subchannel *sub, struct ast_frame *f)
 {
-	for(;;) {
+	for (;;) {
 		if (sub->owner) {
 			if (!ast_channel_trylock(sub->owner)) {
 				ast_queue_frame(sub->owner, f);
@@ -619,14 +614,15 @@
 			} else {
 				DEADLOCK_AVOIDANCE(&sub->lock);
 			}
-		} else
+		} else {
 			break;
+		}
 	}
 }
 
 static void mgcp_queue_hangup(struct mgcp_subchannel *sub)
 {
-	for(;;) {
+	for (;;) {
 		if (sub->owner) {
 			if (!ast_channel_trylock(sub->owner)) {
 				ast_queue_hangup(sub->owner);
@@ -635,8 +631,9 @@
 			} else {
 				DEADLOCK_AVOIDANCE(&sub->lock);
 			}
-		} else
+		} else {
 			break;
+		}
 	}
 }
 
@@ -656,18 +653,12 @@
 	/* find out expired msgs */
 	ast_mutex_lock(&gw->msgs_lock);
 
-	prev = NULL, cur = gw->msgs;
-	while (cur) {
+	for (prev = NULL, cur = gw->msgs; cur; prev = cur, cur = cur->next) {
 		if (cur->retrans < MAX_RETRANS) {
 			cur->retrans++;
-			if (mgcpdebug) {
-				ast_verbose("Retransmitting #%d transaction %u on [%s]\n",
-					cur->retrans, cur->seqno, gw->name);
-			}
+			ast_debug(1, "Retransmitting #%d transaction %u on [%s]\n",
+				cur->retrans, cur->seqno, gw->name);
 			__mgcp_xmit(gw, cur->buf, cur->len);
-
-			prev = cur;
-			cur = cur->next;
 		} else {
 			if (prev)
 				prev->next = cur->next;
@@ -678,7 +669,6 @@
 				cur->seqno, gw->name);
 
 			w = cur;
-			cur = cur->next;
 
 			if (exq) {
 				w->next = exq;
@@ -700,7 +690,7 @@
 	while (exq) {
 		cur = exq;
 		/* time-out transaction */
-		handle_response(cur->owner_ep, cur->owner_sub, 406, cur->seqno, NULL); 
+		handle_response(cur->owner_ep, cur->owner_sub, 406, cur->seqno, NULL);
 		exq = exq->next;
 		ast_free(cur);
 	}
@@ -709,31 +699,22 @@
 }
 
 /* modified for the new transaction mechanism */
-static int mgcp_postrequest(struct mgcp_endpoint *p, struct mgcp_subchannel *sub, 
+static int mgcp_postrequest(struct mgcp_endpoint *p, struct mgcp_subchannel *sub,
                             char *data, int len, unsigned int seqno)
 {
 	struct mgcp_message *msg;
 	struct mgcp_message *cur;
 	struct mgcp_gateway *gw;
- 	struct timeval now;
-
-	msg = ast_malloc(sizeof(*msg) + len);
-	if (!msg) {
+	struct timeval now;
+
+	if (!(msg = ast_malloc(sizeof(*msg) + len))) {
 		return -1;
 	}
-	gw = ((p && p->parent) ? p->parent : NULL);
-	if (!gw) {
+	if (!(gw = ((p && p->parent) ? p->parent : NULL))) {
 		ast_free(msg);
 		return -1;
 	}
-/* SC
-	time(&t);
-	if (gw->messagepending && (gw->lastouttime + 20 < t)) {
-		ast_log(LOG_NOTICE, "Timeout waiting for response to message:%d,  lastouttime: %ld, now: %ld.  Dumping pending queue\n",
-			gw->msgs ? gw->msgs->seqno : -1, (long) gw->lastouttime, (long) t);
-		dump_queue(sub->parent);
-	}
-*/
+
 	msg->owner_sub = sub;
 	msg->owner_ep = p;
 	msg->seqno = seqno;
@@ -743,10 +724,8 @@
 	memcpy(msg->buf, data, msg->len);
 
 	ast_mutex_lock(&gw->msgs_lock);
-	cur = gw->msgs;
+	for (cur = gw->msgs; cur && cur->next; cur = cur->next);
 	if (cur) {
-		while(cur->next)
-			cur = cur->next;
 		cur->next = msg;
 	} else {
 		gw->msgs = msg;
@@ -758,23 +737,13 @@
 	if (gw->retransid == -1)
 		gw->retransid = ast_sched_add(sched, DEFAULT_RETRANS, retrans_pkt, (void *)gw);
 	ast_mutex_unlock(&gw->msgs_lock);
-/* SC
-	if (!gw->messagepending) {
-		gw->messagepending = 1;
-		gw->lastout = seqno;
-		gw->lastouttime = t;
-*/
 	__mgcp_xmit(gw, msg->buf, msg->len);
-		/* XXX Should schedule retransmission XXX */
-/* SC
-	} else
-		ast_debug(1, "Deferring transmission of transaction %d\n", seqno);
-*/
+	/* XXX Should schedule retransmission XXX */
 	return 0;
 }
 
 /* modified for new transport */
-static int send_request(struct mgcp_endpoint *p, struct mgcp_subchannel *sub, 
+static int send_request(struct mgcp_endpoint *p, struct mgcp_subchannel *sub,
                         struct mgcp_request *req, unsigned int seqno)
 {
 	int res = 0;
@@ -794,8 +763,8 @@
 			ast_mutex_lock(l);
 			q = sub->cx_queue;
 			/* delete pending cx cmds */
-			/* bugy sb5120 */
-			if(!sub->parent->ncs) {
+			/* buggy sb5120 */
+			if (!sub->parent->ncs) {
 				while (q) {
 					r = q->next;
 					ast_free(q);
@@ -826,8 +795,7 @@
 		}
 	}
 
-	r = ast_malloc(sizeof(*r));
-	if (!r) {
+	if (!(r = ast_malloc(sizeof(*r)))) {
 		ast_log(LOG_WARNING, "Cannot post MGCP request: insufficient memory\n");
 		ast_mutex_unlock(l);
 		return -1;
@@ -835,17 +803,13 @@
 	memcpy(r, req, sizeof(*r));
 
 	if (!(*queue)) {
-		if (mgcpdebug) {
-			ast_verbose("Posting Request:\n%s to %s:%d\n", req->data, 
-				ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
-		}
+		ast_debug(1, "Posting Request:\n%s to %s:%d\n", req->data,
+			ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
 
 		res = mgcp_postrequest(p, sub, req->data, req->len, seqno);
 	} else {
-		if (mgcpdebug) {
-			ast_verbose("Queueing Request:\n%s to %s:%d\n", req->data, 
-				ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
-		}
+		ast_debug(1, "Queueing Request:\n%s to %s:%d\n", req->data,
+			ast_inet_ntoa(p->parent->addr.sin_addr), ntohs(p->parent->addr.sin_port));
 	}
 
 	/* XXX find tail. We could also keep tail in the data struct for faster access */
@@ -872,9 +836,7 @@
 	struct varshead *headp;
 	struct ast_var_t *current;
 
-	if (mgcpdebug) {
-		ast_verb(3, "MGCP mgcp_call(%s)\n", ast->name);
-	}
+	ast_debug(3, "MGCP mgcp_call(%s)\n", ast->name);
 	sub = ast->tech_pvt;
 	p = sub->parent;
 	headp = &ast->varshead;
@@ -890,28 +852,20 @@
 	case MGCP_OFFHOOK:
 		if (!ast_strlen_zero(distinctive_ring)) {
 			snprintf(tone, sizeof(tone), "L/wt%s", distinctive_ring);
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP distinctive callwait %s\n", tone);
-			}
+			ast_debug(3, "MGCP distinctive callwait %s\n", tone);
 		} else {
 			ast_copy_string(tone, (p->ncs ? "L/wt1" : "L/wt"), sizeof(tone));
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP normal callwait %s\n", tone);
-			}
+			ast_debug(3, "MGCP normal callwait %s\n", tone);
 		}
 		break;
 	case MGCP_ONHOOK:
 	default:
 		if (!ast_strlen_zero(distinctive_ring)) {
 			snprintf(tone, sizeof(tone), "L/r%s", distinctive_ring);
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP distinctive ring %s\n", tone);
-			}
+			ast_debug(3, "MGCP distinctive ring %s\n", tone);
 		} else {
 			ast_copy_string(tone, "L/rg", sizeof(tone));
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP default ring\n");
-			}
+			ast_debug(3, "MGCP default ring\n");
 		}
 		break;
 	}
@@ -970,18 +924,15 @@
 		return 0;
 	}
 	ast_mutex_lock(&sub->lock);
-	if (mgcpdebug) {
-		ast_verb(3, "MGCP mgcp_hangup(%s) on %s@%s\n", ast->name, p->name, p->parent->name);
-	}
+	ast_debug(3, "MGCP mgcp_hangup(%s) on %s@%s\n", ast->name, p->name, p->parent->name);
 
 	if ((p->dtmfmode & MGCP_DTMF_INBAND) && p->dsp) {
 		/* check whether other channel is active. */
 		if (!sub->next->owner) {
-			if (p->dtmfmode & MGCP_DTMF_HYBRID)
+			if (p->dtmfmode & MGCP_DTMF_HYBRID) {
 				p->dtmfmode &= ~MGCP_DTMF_INBAND;
-			if (mgcpdebug) {
-				ast_verb(2, "MGCP free dsp on %s@%s\n", p->name, p->parent->name);
-			}
+			}
+			ast_debug(2, "MGCP free dsp on %s@%s\n", p->name, p->parent->name);
 			ast_dsp_free(p->dsp);
 			p->dsp = NULL;
 		}
@@ -1010,7 +961,7 @@
 	if ((sub == p->sub) && sub->next->owner) {
 		if (p->hookstate == MGCP_OFFHOOK) {
 			if (sub->next->owner && ast_bridged_channel(sub->next->owner)) {
-				// ncs fix!
+				/* ncs fix! */
 				transmit_notify_request_with_callerid(p->sub, (p->ncs ? "L/wt1" : "L/wt"), ast_bridged_channel(sub->next->owner)->cid.cid_num, ast_bridged_channel(sub->next->owner)->cid.cid_name);
 			}
 		} else {
@@ -1055,16 +1006,12 @@
 			p->callwaiting = -1;
 		}
 		if (has_voicemail(p)) {
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP mgcp_hangup(%s) on %s@%s set vmwi(+)\n",
-					ast->name, p->name, p->parent->name);
-			}
+			ast_debug(3, "MGCP mgcp_hangup(%s) on %s@%s set vmwi(+)\n",
+				ast->name, p->name, p->parent->name);
 			transmit_notify_request(sub, "L/vmwi(+)");
 		} else {
-			if (mgcpdebug) {
-				ast_verb(3, "MGCP mgcp_hangup(%s) on %s@%s set vmwi(-)\n",
-					ast->name, p->name, p->parent->name);
-			}
+			ast_debug(3, "MGCP mgcp_hangup(%s) on %s@%s set vmwi(-)\n",
+				ast->name, p->name, p->parent->name);
 			transmit_notify_request(sub, "L/vmwi(-)");
 		}
 	}
@@ -1078,7 +1025,6 @@
 	struct mgcp_endpoint *me;
 	int hasendpoints = 0;
 	struct ast_variable * v = NULL;
-	
 
 	switch (cmd) {
 	case CLI_INIT:
@@ -1091,14 +1037,13 @@
 		return NULL;
 	}
 
-	if (a->argc != 3) 
+	if (a->argc != 3) {
 		return CLI_SHOWUSAGE;
+	}
 	ast_mutex_lock(&gatelock);
-	mg = gateways;
-	while(mg) {
-		me = mg->endpoints;
+	for (mg = gateways; mg; mg = mg->next) {
 		ast_cli(a->fd, "Gateway '%s' at %s (%s%s)\n", mg->name, mg->addr.sin_addr.s_addr ? ast_inet_ntoa(mg->addr.sin_addr) : ast_inet_ntoa(mg->defaddr.sin_addr), mg->realtime ? "Realtime, " : "", mg->dynamic ? "Dynamic" : "Static");
-		while(me) {
+		for (me = mg->endpoints; me; me = me->next) {
 			ast_cli(a->fd, "   -- '%s@%s in '%s' is %s\n", me->name, mg->name, me->context, me->sub->owner ? "active" : "idle");
 			if (me->chanvars) {
 				ast_cli(a->fd, "  Variables:\n");
@@ -1107,12 +1052,10 @@
 				}
 			}
 			hasendpoints = 1;
-			me = me->next;
 		}
 		if (!hasendpoints) {
 			ast_cli(a->fd, "   << No Endpoints Defined >>     ");
 		}
-		mg = mg->next;
 	}
 	ast_mutex_unlock(&gatelock);
 	return CLI_SUCCESS;
@@ -1144,37 +1087,33 @@
 		return CLI_SHOWUSAGE;
 	/* split the name into parts by null */
 	ename = ast_strdupa(a->argv[3]);
-	gname = ename;
-	while (*gname) {
+	for (gname = ename; *gname; gname++) {
 		if (*gname == '@') {
 			*gname = 0;
 			gname++;
 			break;
 		}
+	}
+	if (gname[0] == '[') {
 		gname++;
 	}
-	if (gname[0] == '[')
-		gname++;
-	if ((c = strrchr(gname, ']')))
+	if ((c = strrchr(gname, ']'))) {
 		*c = '\0';
+	}
 	ast_mutex_lock(&gatelock);
-	mg = gateways;
-	while(mg) {
+	for (mg = gateways; mg; mg = mg->next) {
 		if (!strcasecmp(mg->name, gname)) {
-			me = mg->endpoints;
-			while(me) {
+			for (me = mg->endpoints; me; me = me->next) {
 				if (!strcasecmp(me->name, ename)) {
 					found = 1;
 					transmit_audit_endpoint(me);
 					break;
 				}
-				me = me->next;
 			}
 			if (found) {
 				break;
 			}
 		}
-		mg = mg->next;
 	}
 	if (!found) {
 		ast_cli(a->fd, "   << Could not find endpoint >>     ");
@@ -1304,9 +1243,9 @@
 	}
 	if (sub) {
 		ast_mutex_lock(&sub->lock);
-		if(!sub->sdpsent && sub->gate) {
-			if(sub->gate->state == GATE_ALLOCATED) {
-				ast_log(LOG_DEBUG, "GATE ALLOCATED, sending sdp\n");
+		if (!sub->sdpsent && sub->gate) {
+			if (sub->gate->state == GATE_ALLOCATED) {
+				ast_debug(1, "GATE ALLOCATED, sending sdp\n");
 				transmit_modify_with_sdp(sub, NULL, 0);
 			}
 		}
@@ -1344,10 +1283,10 @@
 
 	ast_mutex_lock(&sub->lock);
 	if (p->dtmfmode & MGCP_DTMF_INBAND || p->dtmfmode & MGCP_DTMF_HYBRID) {
-		ast_log(LOG_DEBUG, "Sending DTMF using inband/hybrid\n");
+		ast_debug(1, "Sending DTMF using inband/hybrid\n");
 		res = -1; /* Let asterisk play inband indications */
 	} else if (p->dtmfmode & MGCP_DTMF_RFC2833) {
-		ast_log(LOG_DEBUG, "Sending DTMF using RFC2833");
+		ast_debug(1, "Sending DTMF using RFC2833");
 		ast_rtp_instance_dtmf_begin(sub->rtp, digit);
 	} else {
 		ast_log(LOG_ERROR, "Don't know about DTMF_MODE %d\n", p->dtmfmode);
@@ -1366,22 +1305,21 @@
 
 	ast_mutex_lock(&sub->lock);
 	if (p->dtmfmode & MGCP_DTMF_INBAND || p->dtmfmode & MGCP_DTMF_HYBRID) {
-		ast_log(LOG_DEBUG, "Stopping DTMF using inband/hybrid\n");
+		ast_debug(1, "Stopping DTMF using inband/hybrid\n");
 		res = -1; /* Tell Asterisk to stop inband indications */
 	} else if (p->dtmfmode & MGCP_DTMF_RFC2833) {
-
-  		ast_log(LOG_DEBUG, "Stopping DTMF using RFC2833\n");
- 		if (sub->parent->ncs) {
- 			tmp[0] = digit;
- 			tmp[1] = '\0';
- 		} else {
- 			tmp[0] = 'D';
- 			tmp[1] = '/';
- 			tmp[2] = digit;
- 			tmp[3] = '\0';
- 		}
-  		transmit_notify_request(sub, tmp);
-                ast_rtp_instance_dtmf_end(sub->rtp, digit);
+		ast_debug(1, "Stopping DTMF using RFC2833\n");
+		if (sub->parent->ncs) {
+			tmp[0] = digit;
+			tmp[1] = '\0';
+		} else {
+			tmp[0] = 'D';
+			tmp[1] = '/';
+			tmp[2] = digit;
+			tmp[3] = '\0';
+		}
+		transmit_notify_request(sub, tmp);
+		ast_rtp_instance_dtmf_end(sub->rtp, digit);
 	} else {
 		ast_log(LOG_ERROR, "Don't know about DTMF_MODE %d\n", p->dtmfmode);
 	}
@@ -1414,22 +1352,20 @@
 		goto error;
 
 	ast_mutex_lock(&gatelock);
-	g = gateways;
-	while (g) {
+	for (g = gateways; g; g = g->next) {
 		if (strcasecmp(g->name, gw) == 0) {
 			e = g->endpoints;
 			break;
 		}
-		g = g->next;
 	}
 
 	if (!e)
 		goto error;
 
-	while (e) {
-		if (strcasecmp(e->name, endpt) == 0)
+	for (; e; e = e->next) {
+		if (strcasecmp(e->name, endpt) == 0) {
 			break;
-		e = e->next;
+		}
 	}
 
 	if (!e)
@@ -1484,19 +1420,18 @@
 	struct mgcp_subchannel *sub = ast->tech_pvt;
 	int res = 0;
 
-	if (mgcpdebug) {
-		ast_verb(3, "MGCP asked to indicate %d '%s' condition on channel %s\n",
-			ind, control2str(ind), ast->name);
-	}
+	ast_debug(3, "MGCP asked to indicate %d '%s' condition on channel %s\n",
+		ind, control2str(ind), ast->name);
 	ast_mutex_lock(&sub->lock);
 	switch(ind) {
 	case AST_CONTROL_RINGING:
 #ifdef DLINK_BUGGY_FIRMWARE	
 		transmit_notify_request(sub, "rt");
 #else
-		if(!sub->sdpsent) /* will hide the inband progress!!! */
+		if (!sub->sdpsent) { /* will hide the inband progress!!! */
 			transmit_notify_request(sub, sub->parent->ncs ? "L/rt" : "G/rt");
-#endif		
+		}
+#endif
 		break;
 	case AST_CONTROL_BUSY:
 		transmit_notify_request(sub, "L/bz");
@@ -1538,11 +1473,13 @@
 	if (tmp) {
 		tmp->tech = &mgcp_tech;
 		tmp->nativeformats = i->capability;
-		if (!tmp->nativeformats)
+		if (!tmp->nativeformats) {
 			tmp->nativeformats = capability;
+		}
 		fmt = ast_best_codec(tmp->nativeformats);
-		if (sub->rtp)
+		if (sub->rtp) {
 			ast_channel_set_fd(tmp, 0, ast_rtp_instance_fd(sub->rtp, 0));
+		}
 		if (i->dtmfmode & (MGCP_DTMF_INBAND | MGCP_DTMF_HYBRID)) {
 			i->dsp = ast_dsp_new();
 			ast_dsp_set_features(i->dsp, DSP_FEATURE_DIGIT_DETECT);
@@ -1575,9 +1512,10 @@
 		/* Don't use ast_set_callerid() here because it will
 		 * generate a needless NewCallerID event */
 		tmp->cid.cid_ani = ast_strdup(i->cid_num);
-		
-		if (!i->adsi)
+
+		if (!i->adsi) {
 			tmp->adsicpe = AST_ADSI_UNAVAILABLE;
+		}
 		tmp->priority = 1;
 
 		/* Set channel variables for this call from configuration */
@@ -1586,8 +1524,9 @@
 			pbx_builtin_setvar_helper(tmp, v->name, ast_get_encoded_str(v->value, valuebuf, sizeof(valuebuf)));
 		}
 
-		if (sub->rtp)
+		if (sub->rtp) {
 			ast_jb_configure(tmp, &global_jbconf);
+		}
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
 				ast_log(LOG_WARNING, "Unable to start PBX on %s\n", tmp->name);
@@ -1603,10 +1542,10 @@
 	return tmp;
 }
 
-static char* get_sdp_by_line(char* line, char *name, int nameLen)
+static char *get_sdp_by_line(char* line, char *name, int nameLen)
 {
 	if (strncasecmp(line, name, nameLen) == 0 && line[nameLen] == '=') {
-		char* r = line + nameLen + 1;
+		char *r = line + nameLen + 1;
 		while (*r && (*r < 33)) ++r;
 		return r;
 	}
@@ -1619,19 +1558,19 @@
 	int len = strlen(name);
 	char *r;
 
-	for (x=0; x<req->lines; x++) {
+	for (x = 0; x < req->lines; x++) {
 		r = get_sdp_by_line(req->line[x], name, len);
 		if (r[0] != '\0') return r;
 	}
 	return "";
 }
 
-static void sdpLineNum_iterator_init(int* iterator)
+static void sdpLineNum_iterator_init(int *iterator)
 {
 	*iterator = 0;
 }
 
-static char* get_sdp_iterate(int* iterator, struct mgcp_request *req, char *name)
+static char *get_sdp_iterate(int* iterator, struct mgcp_request *req, char *name)
 {
 	int len = strlen(name);
 	char *r;
@@ -1647,13 +1586,14 @@
 	int x;
 	int len = strlen(name);
 	char *r;
-	for (x=*start;x<req->headers;x++) {
-		if (!strncasecmp(req->header[x], name, len) && 
+	for (x = *start; x < req->headers; x++) {
+		if (!strncasecmp(req->header[x], name, len) &&
 		    (req->header[x][len] == ':')) {
 			r = req->header[x] + len + 1;
-			while(*r && (*r < 33))
+			while (*r && (*r < 33)) {
 				r++;
-			*start = x+1;
+			}
+			*start = x + 1;
 			return r;
 		}
 	}
@@ -1668,23 +1608,26 @@
 }
 
 /*! \brief get_csv: (SC:) get comma separated value */
-static char *get_csv(char *c, int *len, char **next) 
+static char *get_csv(char *c, int *len, char **next)
 {
 	char *s;
 
 	*next = NULL, *len = 0;
 	if (!c) return NULL;
 
-	while (*c && (*c < 33 || *c == ','))
+	while (*c && (*c < 33 || *c == ',')) {
 		c++;
+	}
 
 	s = c;
-	while (*c && (*c >= 33 && *c != ','))
+	while (*c && (*c >= 33 && *c != ',')) {
 		c++, (*len)++;
+	}
 	*next = c;
 
-	if (*len == 0)
+	if (*len == 0) {
 		s = NULL, *next = NULL;
+	}
 
 	return s;
 }
@@ -1700,45 +1643,40 @@
 	char lines[256];
 	char tmp[4096];
 	int i, j;
-	if(mgcpdebug) ast_verbose ("*** find Realtime MGCPGW\n");
-
-	if (!(i = ast_check_realtime("mgcpgw")) || !(j = ast_check_realtime("mgcpep")))
+
+	ast_debug(1, "*** find Realtime MGCPGW\n");
+
+	if (!(i = ast_check_realtime("mgcpgw")) || !(j = ast_check_realtime("mgcpep"))) {
 		return NULL;
-
-	if(!at || !strlen(at)) {
-		ast_log(LOG_DEBUG, "null gw name\n");
+	}
+
+	if (ast_strlen_zero(at)) {
+		ast_debug(1, "null gw name\n");
 		return NULL;
 	}
 
-	mgcpgwconfig = ast_load_realtime("mgcpgw", "name", at, NULL);
-	if(!mgcpgwconfig)
+	if (!(mgcpgwconfig = ast_load_realtime("mgcpgw", "name", at, NULL))) {
 		return NULL;
+	}
 
 	lines[0] = '\0';
-	gwv = mgcpgwconfig;
-	while (gwv) {
-		if(!strcasecmp(gwv->name, "lines")) {
-			strcpy(lines, gwv->value);
+	for (gwv = mgcpgwconfig; gwv; gwv = gwv->next) {
+		if (!strcasecmp(gwv->name, "lines")) {
+			ast_copy_string(lines, gwv->value, sizeof(lines));
 			break;
 		}
-		gwv = gwv->next;
-	}
-	gwv = mgcpgwconfig;
-	while (gwv->next) {
-		gwv = gwv->next;
-	}
+	}
+	for (gwv = gwv && gwv->next ? gwv : mgcpgwconfig; gwv->next; gwv = gwv->next);
 	if (!ast_strlen_zero(lines)) {
-		c = lines;
-		line = tmp;
-		while(*c) {
+		for (c = lines, line = tmp; *c; c++) {
 			*line = *c;
-			if(*c == ',') {
+			if (*c == ',') {
 					*(line) = 0;
 					mgcpepconfig = ast_load_realtime("mgcpep", "name", at, "line", tmp, NULL);
 					gwv->next = mgcpepconfig;
 
-					while(gwv->next) {
-						if(!strcasecmp(gwv->next->name, "line")) {
+					while (gwv->next) {
+						if (!strcasecmp(gwv->next->name, "line")) {
 							epname = gwv->next;
 							gwv->next = gwv->next->next;
 						} else {
@@ -1746,7 +1684,7 @@
 						}
 					}
 						/* moving the line var to the end */
-					if(epname) {
+					if (epname) {
 						gwv->next = epname;
 						epname->next = NULL;
 						gwv = gwv->next;
@@ -1754,30 +1692,25 @@
 					mgcpepconfig = NULL;
 					line = tmp;
 			} else {
-				line ++;
-			}
-			c++;
-		}
-	}
-	gwv = mgcpgwconfig;
-	while(gwv) {
-		ast_log(LOG_DEBUG, "MGCP Realtime var: %s => %s\n", gwv->name, gwv->value);
-		gwv = gwv->next;
-	}
-
-	if(mgcpgwconfig) { 
+				line++;
+			}
+		}
+	}
+	for (gwv = mgcpgwconfig; gwv; gwv = gwv->next) {
+		ast_debug(1, "MGCP Realtime var: %s => %s\n", gwv->name, gwv->value);
+	}
+
+	if (mgcpgwconfig) {
 		g = build_gateway(at, mgcpgwconfig);
 		ast_variables_destroy(mgcpgwconfig);
 	}
-	if(g) {
+	if (g) {
 		g->next = gateways;
 		g->realtime = 1;
 		gateways = g;
-		e = g->endpoints;
-		while(e) {
+		for (e = g->endpoints; e; e = e->next) {
 			transmit_audit_endpoint(e);
 			e->needaudit = 0;
-			e = e->next;
 		}
 	}
 	return g;
@@ -1804,14 +1737,12 @@
 	if (at && (at[0] == '[')) {
 		at++;
 		c = strrchr(at, ']');
-		if (c)
+		if (c) {
 			*c = '\0';
-	}
-	g = gateways;
-	if(!g)
-		g = find_realtime_gw(name, at, sin);
-	while(g) {
-		if ((!name || !strcasecmp(g->name, at)) && 
+		}
+	}
+	for (g = gateways ? gateways : find_realtime_gw(name, at, sin); g; g = g->next ? g->next : find_realtime_gw(name, at, sin)) {
+		if ((!name || !strcasecmp(g->name, at)) &&
 		    (sin || g->addr.sin_addr.s_addr || g->defaddr.sin_addr.s_addr)) {
 			/* Found the gateway.  If it's dynamic, save it's address -- now for the endpoint */
 			if (sin && g->dynamic && name) {
@@ -1822,17 +1753,15 @@
 						memcpy(&g->ourip, &__ourip, sizeof(g->ourip));
 					ast_verb(3, "Registered MGCP gateway '%s' at %s port %d\n", g->name, ast_inet_ntoa(g->addr.sin_addr), ntohs(g->addr.sin_port));
 				}
-			}
 			/* not dynamic, check if the name matches */
-			else if (name) {
+			} else if (name) {
 				if (strcasecmp(g->name, at)) {
 					g = g->next;
 					continue;
 				}
-			}
 			/* not dynamic, no name, check if the addr matches */
-			else if (!name && sin) {
- 				if ((g->addr.sin_addr.s_addr != sin->sin_addr.s_addr) ||
+			} else if (!name && sin) {
+				if ((g->addr.sin_addr.s_addr != sin->sin_addr.s_addr) ||
 				    (g->addr.sin_port != sin->sin_port)) {
 					if(!g->next)
 						g = find_realtime_gw(name, at, sin);
@@ -1841,67 +1770,37 @@
 					continue;
 				}
 			} else {
-				if(!g->next)
-					g = find_realtime_gw(name, at, sin);
-				else
-					g = g->next;
 				continue;
 			}
-			/* SC */
-			p = g->endpoints;
-			while(p) {
-				ast_debug(1, "Searching on %s@%s for subchannel\n",
-					p->name, g->name);
+			for (p = g->endpoints; p; p = p->next) {
+				ast_debug(1, "Searching on %s@%s for subchannel\n", p->name, g->name);
 				if (msgid) {
-#if 0 /* new transport mech */
-					sub = p->sub;
-					do {
-						ast_debug(1, "Searching on %s@%s-%d for subchannel with lastout: %d\n",
-							p->name, g->name, sub->id, msgid);
-						if (sub->lastout == msgid) {
-							ast_debug(1, "Found subchannel sub%d to handle request %d sub->lastout: %d\n",
-								sub->id, msgid, sub->lastout);
-							found = 1;
-							break;
-						}
-						sub = sub->next;
-					} while (sub != p->sub);
-					if (found) {
-						break;
-					}
-#endif
-					/* SC */
 					sub = p->sub;
 					found = 1;
-					/* SC */
 					break;
 				} else if (name && !strcasecmp(p->name, tmp)) {
-					ast_debug(1, "Coundn't determine subchannel, assuming current master %s@%s-%d\n", 
+					ast_debug(1, "Coundn't determine subchannel, assuming current master %s@%s-%d\n",
 						p->name, g->name, p->sub->id);
 					sub = p->sub;
 					found = 1;
 					break;
 				}
-				p = p->next;
 			}
 			if (sub && found) {
 				ast_mutex_lock(&sub->lock);
 				break;
 			}
 		}
-		if(!g->next)
-			g = find_realtime_gw(name, at, sin);
-		else
-			g = g->next;
 	}
 	ast_mutex_unlock(&gatelock);
 	if (!sub) {
 		if (name) {
-			if (g)
+			if (g) {
 				ast_log(LOG_NOTICE, "Endpoint '%s' not found on gateway '%s'\n", tmp, at);
-			else
+			} else {
 				ast_log(LOG_NOTICE, "Gateway '%s' (and thus its endpoint '%s') does not exist\n", at, tmp);
-		} 
+			}
+		}
 	}
 	return sub;
 }
@@ -1915,13 +1814,11 @@
 
 	/* First header starts immediately */
 	req->header[f] = c;
-	while(*c) {
+	for (; *c; c++) {
 		if (*c == '\n') {
 			/* We've got a new header */
 			*c = 0;
-#if 0
-			printf("Header: %s (%d)\n", req->header[f], strlen(req->header[f]));
-#endif			
+			ast_debug(3, "Header: %s (%d)\n", req->header[f], strlen(req->header[f]));
 			if (ast_strlen_zero(req->header[f])) {
 				/* Line by itself means we're now in content */
 				c++;
@@ -1929,82 +1826,81 @@
 			}
 			if (f >= MGCP_MAX_HEADERS - 1) {
 				ast_log(LOG_WARNING, "Too many MGCP headers...\n");
-			} else
+			} else {
 				f++;
+			}
 			req->header[f] = c + 1;
 		} else if (*c == '\r') {
 			/* Ignore but eliminate \r's */
 			*c = 0;
 		}
-		c++;
 	}
 	/* Check for last header */
-	if (!ast_strlen_zero(req->header[f])) 
+	if (!ast_strlen_zero(req->header[f])) {
 		f++;
+	}
 	req->headers = f;
 	/* Now we process any mime content */
 	f = 0;
 	req->line[f] = c;
-	while(*c) {
+	for (; *c; c++) {
 		if (*c == '\n') {
 			/* We've got a new line */
 			*c = 0;
-#if 0
-			printf("Line: %s (%d)\n", req->line[f], strlen(req->line[f]));
-#endif			
+			ast_debug(3, "Line: %s (%d)\n", req->line[f], strlen(req->line[f]));
 			if (f >= MGCP_MAX_LINES - 1) {
 				ast_log(LOG_WARNING, "Too many SDP lines...\n");
-			} else
+			} else {
 				f++;
+			}
 			req->line[f] = c + 1;
 		} else if (*c == '\r') {
 			/* Ignore and eliminate \r's */
 			*c = 0;
 		}
-		c++;
 	}
 	/* Check for last line */
-	if (!ast_strlen_zero(req->line[f])) 
+	if (!ast_strlen_zero(req->line[f])) {
 		f++;
+	}
 	req->lines = f;
 	/* Parse up the initial header */
 	c = req->header[0];
-	while(*c && *c < 33) c++;
+	while (*c && *c < 33) c++;
 	/* First the verb */
 	req->verb = c;
-	while(*c && (*c > 32)) c++;
+	while (*c && (*c > 32)) c++;
 	if (*c) {
 		*c = '\0';
 		c++;
-		while(*c && (*c < 33)) c++;
+		while (*c && (*c < 33)) c++;
 		req->identifier = c;
-		while(*c && (*c > 32)) c++;
+		while (*c && (*c > 32)) c++;
 		if (*c) {
 			*c = '\0';
 			c++;
-			while(*c && (*c < 33)) c++;
+			while (*c && (*c < 33)) c++;
 			req->endpoint = c;
-			while(*c && (*c > 32)) c++;
+			while (*c && (*c > 32)) c++;
 			if (*c) {
 				*c = '\0';
 				c++;
-				while(*c && (*c < 33)) c++;
+				while (*c && (*c < 33)) c++;
 				req->version = c;
-				while(*c && (*c > 32)) c++;
-				while(*c && (*c < 33)) c++;
-				while(*c && (*c > 32)) c++;
+				while (*c && (*c > 32)) c++;
+				while (*c && (*c < 33)) c++;
+				while (*c && (*c > 32)) c++;
 				*c = '\0';
 			}
 		}
 	}
-		
-	if (mgcpdebug) {
-		ast_verbose("Verb: '%s', Identifier: '%s', Endpoint: '%s', Version: '%s'\n",
+
+	ast_debug(1, "Verb: '%s', Identifier: '%s', Endpoint: '%s', Version: '%s'\n",
 			req->verb, req->identifier, req->endpoint, req->version);
-		ast_verbose("%d headers, %d lines\n", req->headers, req->lines);
-	}
-	if (*c) 
+	ast_debug(1, "%d headers, %d lines\n", req->headers, req->lines);
+	if (*c) {
 		ast_log(LOG_WARNING, "Odd content, extra stuff left over ('%s')\n", c);
+	}
 }
 
 static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
@@ -2041,23 +1937,22 @@
 		return -1;
 	}
 	if (sscanf(m, "audio %30d RTP/AVP %n", &portno, &len) != 1) {
-		ast_log(LOG_WARNING, "Unable to determine port number for RTP in '%s'\n", m); 
+		ast_log(LOG_WARNING, "Unable to determine port number for RTP in '%s'\n", m);
 		return -1;
 	}
 	sin.sin_family = AF_INET;
 	memcpy(&sin.sin_addr, hp->h_addr, sizeof(sin.sin_addr));
 	sin.sin_port = htons(portno);
 	ast_rtp_instance_set_remote_address(sub->rtp, &sin);
-#if 0
-	printf("Peer RTP is at port %s:%d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
-#endif	
+	ast_debug(3, "Peer RTP is at port %s:%d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
 	/* Scan through the RTP payload types specified in a "m=" line: */
 	ast_rtp_codecs_payloads_clear(ast_rtp_instance_get_codecs(sub->rtp), sub->rtp);
 	codecs = ast_strdupa(m + len);
 	while (!ast_strlen_zero(codecs)) {
 		if (sscanf(codecs, "%30d%n", &codec, &len) != 1) {
-			if (codec_count)
+			if (codec_count) {
 				break;
+			}
 			ast_log(LOG_WARNING, "Error in codec string '%s' at '%s'\n", m, codecs);
 			return -1;
 		}
@@ -2080,12 +1975,10 @@
 	/* Now gather all of the codecs that were asked for: */
 	ast_rtp_codecs_payload_formats(ast_rtp_instance_get_codecs(sub->rtp), &peercapability, &peerNonCodecCapability);
 	p->capability = capability & peercapability;
-	if (mgcpdebug) {
-		ast_verbose("Capabilities: us - %d, them - %d, combined - %d\n",
-			capability, peercapability, p->capability);
-		ast_verbose("Non-codec capabilities: us - %d, them - %d, combined - %d\n",
-			nonCodecCapability, peerNonCodecCapability, p->nonCodecCapability);
-	}
+	ast_debug(1, "Capabilities: us - %d, them - %d, combined - %d\n",
+		capability, peercapability, p->capability);
+	ast_debug(1, "Non-codec capabilities: us - %d, them - %d, combined - %d\n",
+		nonCodecCapability, peerNonCodecCapability, p->nonCodecCapability);
 	if (!p->capability) {
 		ast_log(LOG_WARNING, "No compatible codecs!\n");
 		return -1;
@@ -2106,13 +1999,13 @@
 	req->header[req->headers] = req->data + req->len;
 	snprintf(req->header[req->headers], sizeof(req->data) - req->len, "%s: %s\r\n", var, value);
 	req->len += strlen(req->header[req->headers]);
-	if (req->headers < MGCP_MAX_HEADERS)
+	if (req->headers < MGCP_MAX_HEADERS) {
 		req->headers++;
-	else {
+	} else {
 		ast_log(LOG_WARNING, "Out of header space\n");
 		return -1;
 	}
-	return 0;	
+	return 0;
 }
 
 static int add_line(struct mgcp_request *req, char *line)
@@ -2129,13 +2022,13 @@
 	req->line[req->lines] = req->data + req->len;
 	snprintf(req->line[req->lines], sizeof(req->data) - req->len, "%s", line);
 	req->len += strlen(req->line[req->lines]);
-	if (req->lines < MGCP_MAX_LINES)
+	if (req->lines < MGCP_MAX_LINES) {
 		req->lines++;
-	else {
+	} else {
 		ast_log(LOG_WARNING, "Out of line space\n");
 		return -1;
 	}
-	return 0;	
+	return 0;
 }
 
 static int init_resp(struct mgcp_request *req, char *resp, struct mgcp_request *orig, char *resprest)
@@ -2148,10 +2041,11 @@
 	req->header[req->headers] = req->data + req->len;
 	snprintf(req->header[req->headers], sizeof(req->data) - req->len, "%s %s %s\r\n", resp, orig->identifier, resprest);
 	req->len += strlen(req->header[req->headers]);
-	if (req->headers < MGCP_MAX_HEADERS)
+	if (req->headers < MGCP_MAX_HEADERS) {
 		req->headers++;
-	else
+	} else {
 		ast_log(LOG_WARNING, "Out of header space\n");
+	}
 	return 0;
 }
 
@@ -2164,15 +2058,17 @@
 	}
 	req->header[req->headers] = req->data + req->len;
 	/* check if we need brackets around the gw name */
-	if (p->parent->isnamedottedip)
+	if (p->parent->isnamedottedip) {
 		snprintf(req->header[req->headers], sizeof(req->data) - req->len, "%s %d %s@[%s] MGCP 1.0%s\r\n", verb, oseq, p->name, p->parent->name, p->ncs ? " NCS 1.0" : "");
-	else
+	} else {
 +		snprintf(req->header[req->headers], sizeof(req->data) - req->len, "%s %d %s@%s MGCP 1.0%s\r\n", verb, oseq, p->name, p->parent->name, p->ncs ? " NCS 1.0" : "");
+	}
 	req->len += strlen(req->header[req->headers]);
-	if (req->headers < MGCP_MAX_HEADERS)
+	if (req->headers < MGCP_MAX_HEADERS) {
 		req->headers++;
-	else
+	} else {
 		ast_log(LOG_WARNING, "Out of header space\n");
+	}
 	return 0;
 }
 
@@ -2188,8 +2084,9 @@
 {
 	memset(req, 0, sizeof(struct mgcp_request));
 	oseq++;
-	if (oseq > 999999999)
+	if (oseq > 999999999) {
 		oseq = 1;
+	}
 	init_req(p, req, verb);
 	return 0;
 }
@@ -2200,21 +2097,23 @@
 	struct mgcp_endpoint *p = sub->parent;
 	struct mgcp_response *mgr;
 
-	if(!sub)
+	if (!sub) {
 		return -1;
+	}
 
 	respprep(&resp, p, msg, req, msgrest);
-	mgr = ast_calloc(1, sizeof(*mgr) + resp.len + 1);
-	if (mgr) {
-		/* Store MGCP response in case we have to retransmit */
-		sscanf(req->identifier, "%30d", &mgr->seqno);
-		time(&mgr->whensent);
-		mgr->len = resp.len;
-		memcpy(mgr->buf, resp.data, resp.len);
-		mgr->buf[resp.len] = '\0';
-		mgr->next = p->parent->responses;
-		p->parent->responses = mgr;
-	}
+	if (!(mgr = ast_calloc(1, sizeof(*mgr) + resp.len + 1))) {
+		return send_response(sub, &resp);
+	}
+	/* Store MGCP response in case we have to retransmit */
+	sscanf(req->identifier, "%30d", &mgr->seqno);
+	time(&mgr->whensent);
+	mgr->len = resp.len;
+	memcpy(mgr->buf, resp.data, resp.len);
+	mgr->buf[resp.len] = '\0';
+	mgr->next = p->parent->responses;
+	p->parent->responses = mgr;
+
 	return send_response(sub, &resp);
 }
 
@@ -2256,9 +2155,7 @@
 			dest.sin_port = sin.sin_port;
 		}
 	}
-	if (mgcpdebug) {
-		ast_verbose("We're at %s port %d\n", ast_inet_ntoa(p->parent->ourip), ntohs(sin.sin_port));
-	}
+	ast_debug(1, "We're at %s port %d\n", ast_inet_ntoa(p->parent->ourip), ntohs(sin.sin_port));
 	ast_copy_string(v, "v=0\r\n", sizeof(v));
 	snprintf(o, sizeof(o), "o=root %d %d IN IP4 %s\r\n", (int)getpid(), (int)getpid(), ast_inet_ntoa(dest.sin_addr));
 	ast_copy_string(s, "s=session\r\n", sizeof(s));
@@ -2267,9 +2164,7 @@
 	snprintf(m, sizeof(m), "m=audio %d RTP/AVP", ntohs(dest.sin_port));
 	for (x = 1; x <= AST_FORMAT_AUDIO_MASK; x <<= 1) {
 		if (p->capability & x) {
-			if (mgcpdebug) {
-				ast_verbose("Answering with capability %d\n", x);
-			}
+			ast_debug(1, "Answering with capability %d\n", x);
 			codec = ast_rtp_codecs_payload_code(ast_rtp_instance_get_codecs(sub->rtp), 1, x);
 			if (codec > -1) {
 				snprintf(costr, sizeof(costr), " %d", codec);
@@ -2281,9 +2176,7 @@
 	}
 	for (x = 1; x <= AST_RTP_MAX; x <<= 1) {
 		if (p->nonCodecCapability & x) {
-			if (mgcpdebug) {
-				ast_verbose("Answering with non-codec capability %d\n", x);
-			}
+			ast_debug(1, "Answering with non-codec capability %d\n", x);
 			codec = ast_rtp_codecs_payload_code(ast_rtp_instance_get_codecs(sub->rtp), 0, x);
 			if (codec > -1) {
 				snprintf(costr, sizeof(costr), " %d", codec);
@@ -2326,27 +2219,27 @@
 		ast_rtp_instance_get_remote_address(rtp, &sub->tmpdest);
 		return 0;
 	}
- 	ast_copy_string(local, "e:on, s:off, p:20", sizeof(local));
+	ast_copy_string(local, "e:on, s:off, p:20", sizeof(local));
 	for (x = 1; x <= AST_FORMAT_AUDIO_MASK; x <<= 1) {
 		if (p->capability & x) {
 			snprintf(tmp, sizeof(tmp), ", a:%s", ast_rtp_lookup_mime_subtype2(1, x, 0));
 			strncat(local, tmp, sizeof(local) - strlen(local) - 1);
 		}
 	}
- 
- 	if (sub->gate) {
- 		if(sub->gate->state == GATE_ALLOCATED || sub->gate->state == GATE_OPEN) {
- 			snprintf(tmp, sizeof(tmp), ", dq-gi:%x", sub->gate->gateid);
- 			strncat(local, tmp, sizeof(local) - strlen(local) - 1);
- 			sub->sdpsent = 1;
- 		} else {
- 			/* oops wait */
- 			ast_log(LOG_DEBUG, "Waiting for opened gate...\n");
- 			sub->sdpsent = 0;
- 			return 0;
- 		}
- 	}
- 
+
+	if (sub->gate) {
+		if (sub->gate->state == GATE_ALLOCATED || sub->gate->state == GATE_OPEN) {
+			snprintf(tmp, sizeof(tmp), ", dq-gi:%x", sub->gate->gateid);
+			strncat(local, tmp, sizeof(local) - strlen(local) - 1);
+			sub->sdpsent = 1;
+		} else {
+			/* oops wait */
+			ast_debug(1, "Waiting for opened gate...\n");
+			sub->sdpsent = 0;
+			return 0;
+		}
+	}
+
 
 	reqprep(&resp, p, "MDCX");
 	add_header(&resp, "C", sub->callid);
@@ -2360,132 +2253,131 @@
 	/* fill in new fields */
 	resp.cmd = MGCP_CMD_MDCX;
 	resp.trid = oseq;
-	return send_request(p, sub, &resp, oseq); /* SC */
+	return send_request(p, sub, &resp, oseq);
 }
 
 static int transmit_connect_with_sdp(struct mgcp_subchannel *sub, struct ast_rtp_instance *rtp)
 {
 	struct mgcp_request resp;
 	char local[256];
-	char tmp[80];	
+	char tmp[80];
 	int x;
 	struct mgcp_endpoint *p = sub->parent;
-	
- 	if (mgcpdebug) {

[... 1824 lines stripped ...]



More information about the asterisk-commits mailing list