[Freeswitch-svn] [commit] r6867 - freeswitch/trunk/src

Freeswitch SVN anthm at freeswitch.org
Tue Dec 18 12:33:29 EST 2007


Author: anthm
Date: Tue Dec 18 12:33:29 2007
New Revision: 6867

Modified:
   freeswitch/trunk/src/switch_ivr.c
   freeswitch/trunk/src/switch_ivr_originate.c
   freeswitch/trunk/src/switch_ivr_play_say.c
   freeswitch/trunk/src/switch_rtp.c

Log:
opts

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Tue Dec 18 12:33:29 2007
@@ -1146,7 +1146,9 @@
 					}
 					*dst = digit;
 				} else {
-					stream->digits = realloc(stream->digits, len + 2);
+					char *tmp = realloc(stream->digits, len + 2);
+					switch_assert(tmp);
+					stream->digits = tmp;
 					*(stream->digits + (len++)) = digit;
 					*(stream->digits + len) = '\0';
 					stream->last_digit_time = switch_time_now() / 1000;

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Tue Dec 18 12:33:29 2007
@@ -233,7 +233,7 @@
 	return 0;
 }
 
-#define MAX_PEERS 256
+#define MAX_PEERS 128
 SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *session,
 													 switch_core_session_t **bleg,
 													 switch_call_cause_t *cause,

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Tue Dec 18 12:33:29 2007
@@ -663,7 +663,7 @@
 SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *session, switch_file_handle_t *fh, const char *file, switch_input_args_t *args)
 {
 	switch_channel_t *channel;
-	int16_t abuf[FILE_STARTSAMPLES];
+	int16_t *abuf;
 	char dtmf[128];
 	uint32_t interval = 0, samples = 0, framelen, sample_start = 0;
 	uint32_t ilen = 0;
@@ -686,6 +686,8 @@
 	const char *timer_name;
 	const char *prebuf;
 
+	switch_zmalloc(abuf, FILE_STARTSAMPLES);
+
 	channel = switch_core_session_get_channel(session);
 	switch_assert(channel != NULL);
 
@@ -694,7 +696,8 @@
 
 
 	if (!file) {
-		return SWITCH_STATUS_FALSE;
+		status = SWITCH_STATUS_FALSE;
+		goto end;
 	}
 
 	if (!prefix) {
@@ -741,7 +744,8 @@
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
 		switch_core_session_reset(session);
-		return SWITCH_STATUS_NOTFOUND;
+		status = SWITCH_STATUS_NOTFOUND;
+		goto end;
 	}
 	if (switch_test_flag(fh, SWITCH_FILE_NATIVE)) {
 		asis = 1;
@@ -749,7 +753,7 @@
 
 
 	write_frame.data = abuf;
-	write_frame.buflen = sizeof(abuf);
+	write_frame.buflen = FILE_STARTSAMPLES;
 
 	if (sample_start > 0) {
 		uint32_t pos = 0;
@@ -806,7 +810,8 @@
 			switch_core_file_close(fh);
 			switch_core_session_reset(session);
 
-			return SWITCH_STATUS_GENERR;
+			status = SWITCH_STATUS_GENERR;
+			goto end;
 		}
 	}
 
@@ -831,7 +836,8 @@
 							  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate, fh->channels, interval);
 			switch_core_file_close(fh);
 			switch_core_session_reset(session);
-			return SWITCH_STATUS_GENERR;
+			status = SWITCH_STATUS_GENERR;
+			goto end;
 		}
 		samples = codec.implementation->samples_per_frame;
 		framelen = codec.implementation->bytes_per_frame;
@@ -847,7 +853,8 @@
 			switch_core_codec_destroy(&codec);
 			switch_core_file_close(fh);
 			switch_core_session_reset(session);
-			return SWITCH_STATUS_GENERR;
+			status = SWITCH_STATUS_GENERR;
+			goto end;
 		}
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "setup timer success %u bytes per %d ms!\n", len, interval);
 	}
@@ -926,7 +933,7 @@
 			olen = asis ? framelen : ilen;
 			do_speed = 0;
 		} else {
-			olen = sizeof(abuf);
+			olen = FILE_STARTSAMPLES;
 			if (!asis) {
 				olen /= 2;
 			}
@@ -1085,6 +1092,10 @@
 		switch_core_timer_destroy(&timer);
 	}
 
+
+ end:
+	free(abuf);
+
 	switch_core_session_reset(session);
 	return status;
 }

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Tue Dec 18 12:33:29 2007
@@ -171,6 +171,7 @@
 	stfu_instance_t *jb;
 	uint32_t max_missed_packets;
 	uint32_t missed_count;
+	rtp_msg_t write_msg;
 };
 
 static int global_init = 0;
@@ -1645,7 +1646,6 @@
 											uint32_t datalen,
 											uint8_t m, switch_payload_t payload, uint32_t ts, uint16_t mseq, uint32_t ssrc, switch_frame_flag_t *flags)
 {
-	rtp_msg_t send_msg = { {0} };
 	switch_size_t bytes;
 
 	if (!switch_rtp_ready(rtp_session)) {
@@ -1660,13 +1660,13 @@
 		return -1;
 	}
 
-	send_msg = rtp_session->send_msg;
-	send_msg.header.seq = htons(mseq);
-	send_msg.header.ts = htonl(ts);
-	send_msg.header.ssrc = htonl(ssrc);
-	send_msg.header.pt = payload;
-	send_msg.header.m = m ? 1 : 0;
-	memcpy(send_msg.body, data, datalen);
+	rtp_session->write_msg = rtp_session->send_msg;
+	rtp_session->write_msg.header.seq = htons(mseq);
+	rtp_session->write_msg.header.ts = htonl(ts);
+	rtp_session->write_msg.header.ssrc = htonl(ssrc);
+	rtp_session->write_msg.header.pt = payload;
+	rtp_session->write_msg.header.m = m ? 1 : 0;
+	memcpy(rtp_session->write_msg.body, data, datalen);
 
 	bytes = rtp_header_len + datalen;
 
@@ -1675,7 +1675,7 @@
 		int sbytes = (int) bytes;
 		err_status_t stat;
 
-		stat = srtp_protect(rtp_session->send_ctx, &send_msg.header, &sbytes);
+		stat = srtp_protect(rtp_session->send_ctx, &rtp_session->write_msg.header, &sbytes);
 		if (stat) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error: srtp protection failed with code %d\n", stat);
 		}
@@ -1683,7 +1683,7 @@
 		bytes = sbytes;
 	}
 
-	if (switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void *) &send_msg, &bytes) != SWITCH_STATUS_SUCCESS) {
+	if (switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void *) &rtp_session->write_msg, &bytes) != SWITCH_STATUS_SUCCESS) {
 		return -1;
 	}
 	return (int) bytes;



More information about the Freeswitch-svn mailing list