diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-15 20:51:30 +0000 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-15 20:51:30 +0000 | 
| commit | fb2bb3f2dcc78b19fb77d9bebf71021c54704e96 (patch) | |
| tree | e9a94ba5f0159a633deda289052646ed1abc7a63 /serial/manager.c | |
| parent | 97650b3f8187b0f8cf8d6f3dfa1c3d6752ef5ca2 (diff) | |
serial: only use automatic assigned channels when it is not provided by the user
Diffstat (limited to 'serial/manager.c')
| -rw-r--r-- | serial/manager.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/serial/manager.c b/serial/manager.c index f9532ff6..4dd98469 100644 --- a/serial/manager.c +++ b/serial/manager.c @@ -935,7 +935,7 @@ static int rfcomm_listen(bdaddr_t *src, uint8_t *channel, int opts)  	memset(&laddr, 0, sizeof(laddr));  	laddr.rc_family = AF_BLUETOOTH;  	bacpy(&laddr.rc_bdaddr, src); -	laddr.rc_channel = 0; +	laddr.rc_channel = (channel ? *channel : 0);  	alen = sizeof(laddr);  	if (bind(sk, (struct sockaddr *) &laddr, alen) < 0) @@ -944,6 +944,9 @@ static int rfcomm_listen(bdaddr_t *src, uint8_t *channel, int opts)  	if (listen(sk, 1) < 0)  		goto fail; +	if (!channel) +		return sk; +  	memset(&laddr, 0, sizeof(laddr));  	if (getsockname(sk, (struct sockaddr *)&laddr, &alen) < 0)  		goto fail; @@ -1233,7 +1236,7 @@ static DBusHandlerResult proxy_enable(DBusConnection *conn,  		return err_failed(conn, msg, "Already enabled");  	/* Listen */ -	/* FIXME: missing options */ +	/* FIXME: missing options, update the stored channel */  	sk = rfcomm_listen(&prx->src, &prx->channel, 0);  	if (sk < 0) {  		const char *strerr = strerror(errno);  | 
