From: Matthew Jordan Date: Thu, 17 Jan 2013 02:28:31 +0000 (+0000) Subject: Fix issue where chan_mobile fails to bind to first available port X-Git-Tag: 1.8.21.0-rc1~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=02c1a29aaf31234f6a330bf422f60c2de556cfb4;p=thirdparty%2Fasterisk.git Fix issue where chan_mobile fails to bind to first available port Per the bluez API, in order to bind to the first available port, the rc_channel field of the socket addressing structure used to bind the socket should be set to 0. Previously, Asterisk had set the rc_channel field set to 1, causing it to connect to whatever happens to be on port 1. We could probably not explicitly set rc_channel to 0 since we memset the struct earlier, but explicitly setting it will hopefully prevent someone from coming in and setting it to some explicit port in the future. (closes issue ASTERISK-16357) Reported by: challado Tested by: Alexander Heinz, Nikolay Ilduganov, benjamin, eliafino, David van Geyn patches: ASTERISK-16357.diff uploaded by Nikolay Ilduganov (license 6253) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379342 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/addons/chan_mobile.c b/addons/chan_mobile.c index c4779eae6e..81f2d2d258 100644 --- a/addons/chan_mobile.c +++ b/addons/chan_mobile.c @@ -1371,7 +1371,7 @@ static int rfcomm_connect(bdaddr_t src, bdaddr_t dst, int remote_channel) memset(&addr, 0, sizeof(addr)); addr.rc_family = AF_BLUETOOTH; bacpy(&addr.rc_bdaddr, &src); - addr.rc_channel = (uint8_t) 1; + addr.rc_channel = (uint8_t) 0; if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) { ast_debug(1, "bind() failed (%d).\n", errno); close(s);