WIN32 compile fixes. No TLS for control block yet
[yaz-moved-to-github.git] / src / unix.c
index da80f53..99f0181 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2005, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: unix.c,v 1.9 2005-01-16 21:51:50 adam Exp $
+ * $Id: unix.c,v 1.12 2005-02-04 13:28:47 adam Exp $
  * UNIX socket COMSTACK. By Morten Bøgeskov.
  */
 /**
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
 #include <fcntl.h>
 #include <signal.h>
 
 #if HAVE_PWD_H
 #include <pwd.h>
 #endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
 
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
 #if HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -152,6 +152,7 @@ COMSTACK unix_type(int s, int blocking, int protocol, void *vp)
     p->event = CS_NONE;
     p->cerrno = 0;
     p->stackerr = 0;
+    p->user = 0;
 
     state->altbuf = 0;
     state->altsize = state->altlen = 0;
@@ -323,11 +324,11 @@ static int unix_connect(COMSTACK h, void *address)
     r = connect(h->iofile, (struct sockaddr *) add, SUN_LEN(add));
     if (r < 0)
     {
-       if (yaz_errno() == EINPROGRESS)
+       if (yaz_errno() == EINPROGRESS || yaz_errno() == EAGAIN)
        {
            h->event = CS_CONNECT;
            h->state = CS_ST_CONNECTING;
-           h->io_pending = CS_WANT_WRITE|CS_WANT_READ;
+           h->io_pending = CS_WANT_WRITE;
            return 1;
        }
        h->cerrno = CSYSERR;