- int res = cs_connect (cs, ap);
- if (res < 0)
- {
- logf (LOG_DEBUG, "Yaz_PDU_Assoc::connect failed");
- close ();
+ int res = cs_connect (m_cs, ap);
+ yaz_log (m_log, "Yaz_PDU_Assoc::connect fd=%d res=%d", cs_fileno(m_cs),
+ res);
+ m_socketObservable->addObserver(cs_fileno(m_cs), this);
+
+ if (res == 0)
+ { // Connect complete
+ m_state = Connecting;
+ unsigned mask = YAZ_SOCKET_OBSERVE_EXCEPT;
+ mask |= YAZ_SOCKET_OBSERVE_WRITE;
+ mask |= YAZ_SOCKET_OBSERVE_READ;
+ yaz_log(m_log, "maskObserver 11");
+ m_socketObservable->maskObserver(this, mask);
+ }
+ else if (res > 0)
+ { // Connect pending
+ m_state = Connecting;
+ unsigned mask = YAZ_SOCKET_OBSERVE_EXCEPT;
+ if (m_cs->io_pending & CS_WANT_WRITE)
+ mask |= YAZ_SOCKET_OBSERVE_WRITE;
+ if (m_cs->io_pending & CS_WANT_READ)
+ mask |= YAZ_SOCKET_OBSERVE_READ;
+ yaz_log(m_log, "maskObserver 11");
+ m_socketObservable->maskObserver(this, mask);