Merged revisions 379344 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Thu, 17 Jan 2013 03:20:22 +0000 (03:20 +0000)
committerAutomerge script <automerge@asterisk.org>
Thu, 17 Jan 2013 03:20:22 +0000 (03:20 +0000)
file:///srv/subversion/repos/asterisk/trunk

................
  r379344 | mjordan | 2013-01-16 20:32:34 -0600 (Wed, 16 Jan 2013) | 23 lines

  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)
  ........

  Merged revisions 379342 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........

  Merged revisions 379343 from http://svn.asterisk.org/svn/asterisk/branches/11
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@379353 65c4cc65-6c06-0410-ace0-fbb531ad65f3

addons/chan_mobile.c

index 7a60a4c..26e4abd 100644 (file)
@@ -1389,7 +1389,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);
        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);
        if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
                ast_debug(1, "bind() failed (%d).\n", errno);
                close(s);