diff -u -1 -0 -r1.49 avdtp.c --- avdtp.c 2 Sep 2007 16:52:50 -0000 1.49 +++ avdtp.c 17 Sep 2007 17:33:24 -0000 @@ -1501,38 +1501,38 @@ if (cond & G_IO_NVAL) return FALSE; if (!g_slist_find(sessions, session)) { debug("l2cap_connect_cb: session got removed"); return FALSE; } sk = g_io_channel_unix_get_fd(chan); - if (cond & (G_IO_ERR | G_IO_HUP)) { - err = EIO; - goto failed; - } - len = sizeof(ret); if (getsockopt(sk, SOL_SOCKET, SO_ERROR, &ret, &len) < 0) { err = errno; error("getsockopt(SO_ERROR): %s (%d)", strerror(err), err); goto failed; } if (ret != 0) { err = ret; error("connect(): %s (%d)", strerror(err), err); goto failed; } + if (cond & G_IO_HUP) { + err = EIO; + goto failed; + } + ba2str(&session->dst, address); debug("AVDTP: connected %s channel to %s", session->pending_open ? "transport" : "signaling", address); memset(&l2o, 0, sizeof(l2o)); len = sizeof(l2o); if (getsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o, &len) < 0) { err = errno; f