[asterisk-commits] file: branch 10 r373551 - in /branches/10: ./ res/res_rtp_multicast.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Sep 25 07:00:27 CDT 2012
Author: file
Date: Tue Sep 25 07:00:23 2012
New Revision: 373551
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=373551
Log:
Fix an issue where a caller to ast_write on a MulticastRTP channel would determine it failed when in reality it did not.
When sending RTP packets via multicast the amount of data sent is stored in a variable and returned
from the write function. This is incorrect as any non-zero value returned is considered a failure while
a return value of 0 is success. For callers (such as ast_streamfile) that checked the return value
they would have considered it a failure when in reality nothing went wrong and it was actually a success.
The write function for the multicast RTP engine now returns -1 on failure and 0 on success, as it should.
(closes issue ASTERISK-17254)
Reported by: wybecom
........
Merged revisions 373550 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Modified:
branches/10/ (props changed)
branches/10/res/res_rtp_multicast.c
Propchange: branches/10/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: branches/10/res/res_rtp_multicast.c
URL: http://svnview.digium.com/svn/asterisk/branches/10/res/res_rtp_multicast.c?view=diff&rev=373551&r1=373550&r2=373551
==============================================================================
--- branches/10/res/res_rtp_multicast.c (original)
+++ branches/10/res/res_rtp_multicast.c Tue Sep 25 07:00:23 2012
@@ -208,7 +208,7 @@
struct multicast_rtp *multicast = ast_rtp_instance_get_data(instance);
struct ast_frame *f = frame;
struct ast_sockaddr remote_address;
- int hdrlen = 12, res, codec;
+ int hdrlen = 12, res = 0, codec;
unsigned char *rtpheader;
/* We only accept audio, nothing else */
@@ -237,12 +237,12 @@
/* Finally send it out to the eager phones listening for us */
ast_rtp_instance_get_remote_address(instance, &remote_address);
- res = ast_sendto(multicast->socket, (void *) rtpheader, f->datalen + hdrlen, 0, &remote_address);
-
- if (res < 0) {
+
+ if (ast_sendto(multicast->socket, (void *) rtpheader, f->datalen + hdrlen, 0, &remote_address) < 0) {
ast_log(LOG_ERROR, "Multicast RTP Transmission error to %s: %s\n",
ast_sockaddr_stringify(&remote_address),
strerror(errno));
+ res = -1;
}
/* If we were forced to duplicate the frame free the new one */
More information about the asterisk-commits
mailing list