Changed ioqueue to allow simultaneous operations on the same key

git-svn-id: https://svn.pjsip.org/repos/pjproject/main@11 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/include/pj/compat/os_linux.h b/pjlib/include/pj/compat/os_linux.h
index c75589d..a2f97f6 100644
--- a/pjlib/include/pj/compat/os_linux.h
+++ b/pjlib/include/pj/compat/os_linux.h
@@ -54,7 +54,22 @@
 #define PJ_HAS_WINSOCK_H	    0
 #define PJ_HAS_WINSOCK2_H	    0
 
-#define PJ_SOCK_HAS_INET_ATON	    1
+#define PJ_SOCK_HAS_INET_ATON	    1

+

+/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return

+ * the status of non-blocking connect() operation.

+ */
+#define PJ_HAS_SO_ERROR             1

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket recv() can not return immediate daata.

+ */

+#define PJ_BLOCKING_ERROR_VAL       EAGAIN

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket connect() can not get connected immediately.

+ */

+#define PJ_BLOCKING_CONNECT_ERROR_VAL   EINPROGRESS

 
 /* Default threading is enabled, unless it's overridden. */
 #ifndef PJ_HAS_THREADS
diff --git a/pjlib/include/pj/compat/os_linux_kernel.h b/pjlib/include/pj/compat/os_linux_kernel.h
index 91c4177..0d44ef0 100644
--- a/pjlib/include/pj/compat/os_linux_kernel.h
+++ b/pjlib/include/pj/compat/os_linux_kernel.h
@@ -52,6 +52,21 @@
 #define PJ_HAS_WINSOCK2_H	    0
 
 #define PJ_SOCK_HAS_INET_ATON	    0
+

+/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return

+ * the status of non-blocking connect() operation.

+ */

+#define PJ_HAS_SO_ERROR             1

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket recv() can not return immediate daata.

+ */

+#define PJ_BLOCKING_ERROR_VAL       EAGAIN

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket connect() can not get connected immediately.

+ */

+#define PJ_BLOCKING_CONNECT_ERROR_VAL   EINPROGRESS

 
 #ifndef PJ_HAS_THREADS
 #  define PJ_HAS_THREADS	    (1)
diff --git a/pjlib/include/pj/compat/os_palmos.h b/pjlib/include/pj/compat/os_palmos.h
index 63cd827..e2ac4b5 100644
--- a/pjlib/include/pj/compat/os_palmos.h
+++ b/pjlib/include/pj/compat/os_palmos.h
@@ -44,6 +44,21 @@
 #define PJ_HAS_WINSOCK2_H	    0
 
 #define PJ_SOCK_HAS_INET_ATON	    0
+

+/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return

+ * the status of non-blocking connect() operation.

+ */

+#define PJ_HAS_SO_ERROR             0

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket recv() can not return immediate daata.

+ */

+#define PJ_BLOCKING_ERROR_VAL       xxx

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket connect() can not get connected immediately.

+ */

+#define PJ_BLOCKING_CONNECT_ERROR_VAL   xxx

 
 /* Default threading is enabled, unless it's overridden. */
 #ifndef PJ_HAS_THREADS
diff --git a/pjlib/include/pj/compat/os_sunos.h b/pjlib/include/pj/compat/os_sunos.h
index b0f48c3..990fb57 100644
--- a/pjlib/include/pj/compat/os_sunos.h
+++ b/pjlib/include/pj/compat/os_sunos.h
@@ -39,6 +39,21 @@
 #define PJ_HAS_WINSOCK2_H	    0
 
 #define PJ_SOCK_HAS_INET_ATON	    0
+

+/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return

+ * the status of non-blocking connect() operation.

+ */

+#define PJ_HAS_SO_ERROR             0

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket recv() can not return immediate daata.

+ */

+#define PJ_BLOCKING_ERROR_VAL       EWOULDBLOCK

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket connect() can not get connected immediately.

+ */

+#define PJ_BLOCKING_CONNECT_ERROR_VAL   EINPROGRESS

 
 /* Default threading is enabled, unless it's overridden. */
 #ifndef PJ_HAS_THREADS
diff --git a/pjlib/include/pj/compat/os_win32.h b/pjlib/include/pj/compat/os_win32.h
index db7b1b4..87ff752 100644
--- a/pjlib/include/pj/compat/os_win32.h
+++ b/pjlib/include/pj/compat/os_win32.h
@@ -59,6 +59,21 @@
 #define PJ_HAS_WINSOCK2_H	    1
 
 #define PJ_SOCK_HAS_INET_ATON	    0
+

+/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return

+ * the status of non-blocking connect() operation.

+ */

+#define PJ_HAS_SO_ERROR             0

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket recv() or send() can not return immediately.

+ */

+#define PJ_BLOCKING_ERROR_VAL       WSAEWOULDBLOCK

+

+/* This value specifies the value set in errno by the OS when a non-blocking

+ * socket connect() can not get connected immediately.

+ */

+#define PJ_BLOCKING_CONNECT_ERROR_VAL   WSAEWOULDBLOCK

 
 /* Default threading is enabled, unless it's overridden. */
 #ifndef PJ_HAS_THREADS