1019
1020 sock->state = SS_CONNECTING;
1021 sk->sk_state = TCP_SYN_SENT;
1022
1023
1024 err = irttp_connect_request(self->tsap, self->dtsap_sel,
1025 self->saddr, self->daddr, NULL,
1026 self->max_sdu_size_rx, NULL);
1027 if (err) {
1028 IRDA_DEBUG(0, "%s(), connect failed!\n", __func__);
1029 return err;
1030 }
1031
1032
1033 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK))
1034 return -EINPROGRESS;
1035
1036 if (wait_event_interruptible(*(sk->sk_sleep),
1037 (sk->sk_state != TCP_SYN_SENT)))
1038 return -ERESTARTSYS;
1039
1040 if (sk->sk_state != TCP_ESTABLISHED) {
1041 sock->state = SS_UNCONNECTED;
1042 err = sock_error(sk);
1043 return err? err : -ECONNRESET;
1044 }
1045
1046 sock->state = SS_CONNECTED;
1047
1048
1049 self->saddr = irttp_get_saddr(self->tsap);
1050
1051 return 0;
1052}
1053
1054static struct proto irda_proto = {
1055 .name = "IRDA",
1056 .owner = THIS_MODULE,
1057 .obj_size = sizeof(struct irda_sock),
1058};
1059