af_rose.c (62910554656cdcd6b6f84a5154c4155aae4ca231) af_rose.c (aa395145165cb06a0d0885221bbe0ce4a564391d)
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * Copyright (C) Jonathan Naylor G4KLX (g4klx@g4klx.demon.co.uk)
8 * Copyright (C) Alan Cox GW4PTS (alan@lxorguk.ukuu.org.uk)

--- 831 unchanged lines hidden (view full) ---

840 /*
841 * A Connect Ack with Choke or timeout or failed routing will go to
842 * closed.
843 */
844 if (sk->sk_state == TCP_SYN_SENT) {
845 DEFINE_WAIT(wait);
846
847 for (;;) {
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * Copyright (C) Jonathan Naylor G4KLX (g4klx@g4klx.demon.co.uk)
8 * Copyright (C) Alan Cox GW4PTS (alan@lxorguk.ukuu.org.uk)

--- 831 unchanged lines hidden (view full) ---

840 /*
841 * A Connect Ack with Choke or timeout or failed routing will go to
842 * closed.
843 */
844 if (sk->sk_state == TCP_SYN_SENT) {
845 DEFINE_WAIT(wait);
846
847 for (;;) {
848 prepare_to_wait(sk->sk_sleep, &wait,
848 prepare_to_wait(sk_sleep(sk), &wait,
849 TASK_INTERRUPTIBLE);
850 if (sk->sk_state != TCP_SYN_SENT)
851 break;
852 if (!signal_pending(current)) {
853 release_sock(sk);
854 schedule();
855 lock_sock(sk);
856 continue;
857 }
858 err = -ERESTARTSYS;
859 break;
860 }
849 TASK_INTERRUPTIBLE);
850 if (sk->sk_state != TCP_SYN_SENT)
851 break;
852 if (!signal_pending(current)) {
853 release_sock(sk);
854 schedule();
855 lock_sock(sk);
856 continue;
857 }
858 err = -ERESTARTSYS;
859 break;
860 }
861 finish_wait(sk->sk_sleep, &wait);
861 finish_wait(sk_sleep(sk), &wait);
862
863 if (err)
864 goto out_release;
865 }
866
867 if (sk->sk_state != TCP_ESTABLISHED) {
868 /* Try next neighbour */
869 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, &diagnostic, 0);

--- 36 unchanged lines hidden (view full) ---

906 goto out_release;
907 }
908
909 /*
910 * The write queue this time is holding sockets ready to use
911 * hooked into the SABM we saved
912 */
913 for (;;) {
862
863 if (err)
864 goto out_release;
865 }
866
867 if (sk->sk_state != TCP_ESTABLISHED) {
868 /* Try next neighbour */
869 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, &diagnostic, 0);

--- 36 unchanged lines hidden (view full) ---

906 goto out_release;
907 }
908
909 /*
910 * The write queue this time is holding sockets ready to use
911 * hooked into the SABM we saved
912 */
913 for (;;) {
914 prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
914 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
915
916 skb = skb_dequeue(&sk->sk_receive_queue);
917 if (skb)
918 break;
919
920 if (flags & O_NONBLOCK) {
921 err = -EWOULDBLOCK;
922 break;
923 }
924 if (!signal_pending(current)) {
925 release_sock(sk);
926 schedule();
927 lock_sock(sk);
928 continue;
929 }
930 err = -ERESTARTSYS;
931 break;
932 }
915
916 skb = skb_dequeue(&sk->sk_receive_queue);
917 if (skb)
918 break;
919
920 if (flags & O_NONBLOCK) {
921 err = -EWOULDBLOCK;
922 break;
923 }
924 if (!signal_pending(current)) {
925 release_sock(sk);
926 schedule();
927 lock_sock(sk);
928 continue;
929 }
930 err = -ERESTARTSYS;
931 break;
932 }
933 finish_wait(sk->sk_sleep, &wait);
933 finish_wait(sk_sleep(sk), &wait);
934 if (err)
935 goto out_release;
936
937 newsk = skb->sk;
938 sock_graft(newsk, newsock);
939
940 /* Now attach up the new socket */
941 skb->sk = NULL;

--- 721 unchanged lines hidden ---
934 if (err)
935 goto out_release;
936
937 newsk = skb->sk;
938 sock_graft(newsk, newsock);
939
940 /* Now attach up the new socket */
941 skb->sk = NULL;

--- 721 unchanged lines hidden ---