You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2017/05/09 23:43:11 UTC

incubator-mynewt-newtmgr git commit: nmxact - Fix deadlock on redundant BLE Open().

Repository: incubator-mynewt-newtmgr
Updated Branches:
  refs/heads/master 739d29c45 -> d8f913e74


nmxact - Fix deadlock on redundant BLE Open().

The BLE session would block forever if the client attempted to start it
twice.  Now, an error is returned instead.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/commit/d8f913e7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/tree/d8f913e7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/diff/d8f913e7

Branch: refs/heads/master
Commit: d8f913e7496d753378d573db0655fe8a43a77c74
Parents: 739d29c
Author: Christopher Collins <cc...@apache.org>
Authored: Tue May 9 16:41:28 2017 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Tue May 9 16:42:31 2017 -0700

----------------------------------------------------------------------
 nmxact/example/ble_dual/ble_dual.go | 6 +++---
 nmxact/nmble/ble_fsm.go             | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/d8f913e7/nmxact/example/ble_dual/ble_dual.go
----------------------------------------------------------------------
diff --git a/nmxact/example/ble_dual/ble_dual.go b/nmxact/example/ble_dual/ble_dual.go
index b1e2a67..5be14e5 100644
--- a/nmxact/example/ble_dual/ble_dual.go
+++ b/nmxact/example/ble_dual/ble_dual.go
@@ -189,7 +189,7 @@ func main() {
 	params := nmble.NewXportCfg()
 	params.SockPath = "/tmp/blehostd-uds"
 	params.BlehostdPath = "blehostd.elf"
-	params.DevPath = "/dev/cu.usbmodem14221"
+	params.DevPath = "/dev/cu.usbmodem142121"
 
 	x, err := nmble.NewBleXport(params)
 	if err != nil {
@@ -210,8 +210,8 @@ func main() {
 
 	peerNames := []string{
 		"ccollins1",
-		"ccollins2",
-		"ccollins3",
+		//"ccollins2",
+		//"ccollins3",
 	}
 
 	sesns := []sesn.Sesn{}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/d8f913e7/nmxact/nmble/ble_fsm.go
----------------------------------------------------------------------
diff --git a/nmxact/nmble/ble_fsm.go b/nmxact/nmble/ble_fsm.go
index 05c18ba..03d70f7 100644
--- a/nmxact/nmble/ble_fsm.go
+++ b/nmxact/nmble/ble_fsm.go
@@ -275,6 +275,7 @@ func (bf *BleFsm) processErr(err error) {
 
 	bf.peerDev = nil
 
+	// Wait for all listeners to get removed.
 	bf.wg.Wait()
 
 	bf.errFunnel.Reset()
@@ -776,15 +777,14 @@ func (bf *BleFsm) executeState() (bool, error) {
 }
 
 func (bf *BleFsm) startOnce() (bool, error) {
-	bf.errFunnel.Start()
-
 	if !bf.IsClosed() {
-		bf.errFunnel.Reset()
 		return false, nmxutil.NewSesnAlreadyOpenError(fmt.Sprintf(
 			"Attempt to open an already-open BLE session (state=%d)",
 			bf.getState()))
 	}
 
+	bf.errFunnel.Start()
+
 	for {
 		retry, err := bf.executeState()
 		if err != nil {