- m_socketObservable->addObserver(cs_fileno(m_cs), this);
- yaz_log(m_log, "maskObserver 9");
- m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
- SOCKET_OBSERVE_EXCEPT);
- yaz_log (m_log, "PDU_Assoc::listen ok fd=%d", cs_fileno(m_cs));
- m_state = Listen;
+
+ int fd = cs_fileno(m_p->cs);
+#if HAVE_FCNTL_H
+ int oldflags = fcntl(fd, F_GETFD, 0);
+ if (oldflags >= 0)
+ {
+ oldflags |= FD_CLOEXEC;
+ fcntl(fd, F_SETFD, oldflags);
+ }
+#endif
+ m_p->m_socketObservable->addObserver(fd, this);
+ yaz_log(m_p->log, "maskObserver 9");
+ m_p->m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
+ SOCKET_OBSERVE_EXCEPT);
+ yaz_log(m_p->log, "PDU_Assoc::listen ok fd=%d", fd);
+ m_p->state = PDU_Assoc_priv::Listen;