af_bluetooth.c (5f6cd79f477743cab98fd49feb03a39e0138b32f) | af_bluetooth.c (d97636980f6ba7344c8aa6fa349b9059c60ee478) |
---|---|
1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2000-2001 Qualcomm Incorporated 4 5 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License version 2 as --- 207 unchanged lines hidden (view full) --- 216 size_t copied; 217 int err; 218 219 BT_DBG("sock %p sk %p len %zu", sock, sk, len); 220 221 if (flags & (MSG_OOB)) 222 return -EOPNOTSUPP; 223 | 1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2000-2001 Qualcomm Incorporated 4 5 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License version 2 as --- 207 unchanged lines hidden (view full) --- 216 size_t copied; 217 int err; 218 219 BT_DBG("sock %p sk %p len %zu", sock, sk, len); 220 221 if (flags & (MSG_OOB)) 222 return -EOPNOTSUPP; 223 |
224 msg->msg_namelen = 0; 225 | |
226 skb = skb_recv_datagram(sk, flags, noblock, &err); 227 if (!skb) { | 224 skb = skb_recv_datagram(sk, flags, noblock, &err); 225 if (!skb) { |
228 if (sk->sk_shutdown & RCV_SHUTDOWN) | 226 if (sk->sk_shutdown & RCV_SHUTDOWN) { 227 msg->msg_namelen = 0; |
229 return 0; | 228 return 0; |
229 } |
|
230 return err; 231 } 232 233 copied = skb->len; 234 if (len < copied) { 235 msg->msg_flags |= MSG_TRUNC; 236 copied = len; 237 } 238 239 skb_reset_transport_header(skb); 240 err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); | 230 return err; 231 } 232 233 copied = skb->len; 234 if (len < copied) { 235 msg->msg_flags |= MSG_TRUNC; 236 copied = len; 237 } 238 239 skb_reset_transport_header(skb); 240 err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); |
241 if (err == 0) | 241 if (err == 0) { |
242 sock_recv_ts_and_drops(msg, sk, skb); 243 | 242 sock_recv_ts_and_drops(msg, sk, skb); 243 |
244 if (bt_sk(sk)->skb_msg_name) 245 bt_sk(sk)->skb_msg_name(skb, msg->msg_name, 246 &msg->msg_namelen); 247 else 248 msg->msg_namelen = 0; 249 } 250 |
|
244 skb_free_datagram(sk, skb); 245 246 return err ? : copied; 247} 248EXPORT_SYMBOL(bt_sock_recvmsg); 249 250static long bt_sock_data_wait(struct sock *sk, long timeo) 251{ --- 518 unchanged lines hidden --- | 251 skb_free_datagram(sk, skb); 252 253 return err ? : copied; 254} 255EXPORT_SYMBOL(bt_sock_recvmsg); 256 257static long bt_sock_data_wait(struct sock *sk, long timeo) 258{ --- 518 unchanged lines hidden --- |