public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: "Collin R. Mulliner" <collin@betaversion.net>
Cc: BlueZ Mailing List <bluez-devel@lists.sourceforge.net>
Subject: Re: [Bluez-devel] RFCOMM support for nonblocking sockets
Date: Tue, 01 Jun 2004 19:25:52 +0200	[thread overview]
Message-ID: <1086110752.4578.6.camel@pegasus> (raw)
In-Reply-To: <20040601190522.78ecb2d9@coredump>

Hi Collin,

> I'm on 2.6.6-mh2 (should be the newest) ...

since today it is -mh3, but that doesn't matters ;)

> the code is:
> 
> sock = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
> 
> if (sock >= 0) {
> 	if (fcntl(sock, F_SETFL, O_NONBLOCK) != 0) {
> 		perror("fcntl()");
> 	}
> }

I don't know if this is the problem, but set the socket to non-blocking
after the bind() and the setsockopt() calls.

> psa.rc_family = AF_BLUETOOTH;
> psa.rc_channel = 0;
> 
> // src == BDADDR_ANY
> if (bacmp(&src, BDADDR_ANY) != 0) {
> 	psa.rc_bdaddr = src;
> 	if (bind(sock, (struct sockaddr *)&psa, sizeof(psa)) < 0) {	
> 		perror("Can't bind()");
> 		return(-1);
> 	}
> }

This check is not needed, because you can bind also src == BDADDR_ANY.
		
> psa.rc_channel = 1;
> psa.rc_bdaddr = dst;

Please try to use bacpy() to fill the rc_bdaddr.

> go:
> if (connect(sock, (struct sockaddr *)&psa, sizeof(psa)) != 0) {	
> 	if(errno == EINPROGRESS) {
> 		// never reached!
> 		pf[0].fd = sock;
> 		pf[0].events = POLLOUT;
> 		poll(pf, 1, -1);
> 		goto go;
> 	}
> 	else {
> 		perror("Connect()");
> 		// allways prints "Resource temporarily unavailable"
> 	}

Run "hcidump -x" to see what is going on. Print out the errno.

Regards

Marcel




-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. 
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel

      parent reply	other threads:[~2004-06-01 17:25 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-01 16:32 [Bluez-devel] RFCOMM support for nonblocking sockets Collin R. Mulliner
2004-06-01 16:41 ` Marcel Holtmann
     [not found]   ` <20040601190522.78ecb2d9@coredump>
2004-06-01 17:25     ` Marcel Holtmann [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1086110752.4578.6.camel@pegasus \
    --to=marcel@holtmann.org \
    --cc=bluez-devel@lists.sourceforge.net \
    --cc=collin@betaversion.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox