patch-2.4.22 linux-2.4.22/net/bluetooth/af_bluetooth.c
Next file: linux-2.4.22/net/bluetooth/bnep/Makefile
Previous file: linux-2.4.22/net/bluetooth/Makefile
Back to the patch index
Back to the overall index
- Lines: 66
- Date:
2003-08-25 04:44:44.000000000 -0700
- Orig file:
linux-2.4.21/net/bluetooth/af_bluetooth.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.21/net/bluetooth/af_bluetooth.c linux-2.4.22/net/bluetooth/af_bluetooth.c
@@ -27,7 +27,7 @@
*
* $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $
*/
-#define VERSION "2.2"
+#define VERSION "2.3"
#include <linux/config.h>
#include <linux/module.h>
@@ -57,7 +57,7 @@
#endif
/* Bluetooth sockets */
-#define BLUEZ_MAX_PROTO 5
+#define BLUEZ_MAX_PROTO 6
static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO];
int bluez_sock_register(int proto, struct net_proto_family *ops)
@@ -253,39 +253,35 @@
return mask;
}
-int bluez_sock_w4_connect(struct sock *sk, int flags)
+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
{
DECLARE_WAITQUEUE(wait, current);
- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
int err = 0;
BT_DBG("sk %p", sk);
add_wait_queue(sk->sleep, &wait);
- while (sk->state != BT_CONNECTED) {
+ while (sk->state != state) {
set_current_state(TASK_INTERRUPTIBLE);
+
if (!timeo) {
err = -EAGAIN;
break;
}
+ if (signal_pending(current)) {
+ err = sock_intr_errno(timeo);
+ break;
+ }
+
release_sock(sk);
timeo = schedule_timeout(timeo);
lock_sock(sk);
- err = 0;
- if (sk->state == BT_CONNECTED)
- break;
-
if (sk->err) {
err = sock_error(sk);
break;
}
-
- if (signal_pending(current)) {
- err = sock_intr_errno(timeo);
- break;
- }
}
set_current_state(TASK_RUNNING);
remove_wait_queue(sk->sleep, &wait);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)