Fixed or added misc flags to enable build selection via compile time macro

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@331 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/include/pj/config.h b/pjlib/include/pj/config.h
index d09795a..607bf26 100644
--- a/pjlib/include/pj/config.h
+++ b/pjlib/include/pj/config.h
@@ -102,6 +102,7 @@
 #   undef PJ_HAS_EVENT_OBJ
 #   undef PJ_ENABLE_EXTRA_CHECK
 #   undef PJ_EXCEPTION_USE_WIN32_SEH
+#   undef PJ_HAS_ERROR_STRING
 #endif
 
 /**
@@ -245,10 +246,14 @@
  * maximum number of socket handles passed to select() (i.e. FD_SETSIZE will 
  * be set to this value).
  *
- * Default: 256
+ * Default: 256 (64 for WinCE)
  */
 #ifndef PJ_IOQUEUE_MAX_HANDLES
-#  define PJ_IOQUEUE_MAX_HANDLES    (256)
+#   if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0
+#	define PJ_IOQUEUE_MAX_HANDLES	(64)
+#   else
+#	define PJ_IOQUEUE_MAX_HANDLES	(256)
+#   endif
 #endif
 
 /**
@@ -344,6 +349,16 @@
 #   define PJ_TIMESTAMP_USE_RDTSC   0
 #endif
 
+/**
+ * Include error message string in the library (pj_strerror()).
+ * This is very much desirable!
+ *
+ * Default: 1
+ */
+#ifndef PJ_HAS_ERROR_STRING
+#   define PJ_HAS_ERROR_STRING	    1
+#endif
+
 
 /** @} */
 
diff --git a/pjlib/src/pj/except.c b/pjlib/src/pj/except.c
index 0a9f32a..531573f 100644
--- a/pjlib/src/pj/except.c
+++ b/pjlib/src/pj/except.c
@@ -133,7 +133,7 @@
 {
     PJ_ASSERT_RETURN(last_exception_id < PJ_MAX_EXCEPTION_ID-1, PJ_ETOOMANY);
 
-    *id = last_exception_id++
+    *id = last_exception_id++;
     return PJ_SUCCESS;
 }
 
diff --git a/pjsip/include/pjsip/sip_config.h b/pjsip/include/pjsip/sip_config.h
index 48d86c6..1ee128e 100644
--- a/pjsip/include/pjsip/sip_config.h
+++ b/pjsip/include/pjsip/sip_config.h
@@ -21,13 +21,69 @@
 
 #include <pj/config.h>
 
+/**
+ * Specify maximum transaction count in transaction hash table.
+ * Default value is 16*1024
+ */
+#ifndef PJSIP_MAX_TSX_COUNT
+#   define PJSIP_MAX_TSX_COUNT		(16*1024)
+#endif
+
+/**
+ * Specify maximum number of dialogs in the dialog hash table.
+ * Default value is 16*1024.
+ */
+#ifndef PJSIP_MAX_DIALOG_COUNT
+#   define PJSIP_MAX_DIALOG_COUNT	(16*1024)
+#endif
+
+
+/**
+ * Specify maximum number of transports.
+ * Default value is equal to maximum number of handles in ioqueue.
+ * See also PJSIP_TPMGR_HTABLE_SIZE.
+ */
+#ifndef PJSIP_MAX_TRANSPORTS
+#   define PJSIP_MAX_TRANSPORTS		(PJ_IOQUEUE_MAX_HANDLES)
+#endif
+
+
+/**
+ * Transport manager hash table size (must be 2^n-1). 
+ * See also PJSIP_MAX_TRANSPORTS
+ */
+#ifndef PJSIP_TPMGR_HTABLE_SIZE
+#   define PJSIP_TPMGR_HTABLE_SIZE	31
+#endif
+
+
+/**
+ * Specify maximum URL size.
+ * This constant is used mainly when printing the URL for logging purpose 
+ * only.
+ */
+#ifndef PJSIP_MAX_URL_SIZE
+#   define PJSIP_MAX_URL_SIZE		256
+#endif
+
+
+/**
+ * Specify maximum number of modules.
+ * This mainly affects the size of mod_data array in various components.
+ */
+#ifndef PJSIP_MAX_MODULE
+#   define PJSIP_MAX_MODULE		16
+#endif
+
+
+
 /* Endpoint. */
 #define PJSIP_MAX_TIMER_COUNT		(2*PJSIP_MAX_TSX_COUNT + 2*PJSIP_MAX_DIALOG_COUNT)
-#define PJSIP_POOL_LEN_ENDPT		(2048+64*PJSIP_MAX_TSX_COUNT)
-#define PJSIP_POOL_INC_ENDPT		(1024)
+#define PJSIP_POOL_LEN_ENDPT		(4000)
+#define PJSIP_POOL_INC_ENDPT		(4000)
 
 /* Transport related constants. */
-#define PJSIP_MAX_TRANSPORTS		(PJ_IOQUEUE_MAX_HANDLES)
+
 #define PJSIP_MAX_PKT_LEN		1500
 #define PJSIP_POOL_RDATA_LEN		4000
 #define PJSIP_POOL_RDATA_INC		4000
@@ -35,8 +91,8 @@
 #define PJSIP_POOL_INC_TRANSPORT	512
 #define PJSIP_POOL_LEN_TDATA		4000
 #define PJSIP_POOL_INC_TDATA		4000
-#define PJSIP_POOL_LEN_UA		(64 + 32*PJSIP_MAX_DIALOG_COUNT)
-#define PJSIP_POOL_INC_UA		0
+#define PJSIP_POOL_LEN_UA		4000
+#define PJSIP_POOL_INC_UA		4000
 #define PJSIP_TRANSPORT_CLOSE_TIMEOUT	30
 #define PJSIP_MAX_TRANSPORT_USAGE	16
 
@@ -48,7 +104,6 @@
 /* Transaction related constants. */
 #define PJSIP_POOL_TSX_LAYER_LEN	4000
 #define PJSIP_POOL_TSX_LAYER_INC	4000
-#define PJSIP_MAX_TSX_COUNT		(16*1024)
 #define PJSIP_POOL_TSX_LEN		1536 //768
 #define PJSIP_POOL_TSX_INC		256
 #define PJSIP_MAX_TSX_KEY_LEN		(PJSIP_MAX_URL_SIZE*2)
@@ -61,26 +116,18 @@
 #define PJSIP_MAX_CALL_ID_LEN		PJ_GUID_STRING_LENGTH
 #define PJSIP_MAX_TAG_LEN		PJ_GUID_STRING_LENGTH
 #define PJSIP_MAX_BRANCH_LEN		(PJSIP_RFC3261_BRANCH_LEN + PJ_GUID_STRING_LENGTH)
-#define PJSIP_MAX_URL_SIZE		256
 #define PJSIP_MAX_HNAME_LEN		64
 
 /* Dialog related constants. */
-#define PJSIP_MAX_DIALOG_COUNT		(16*1024)
 #define PJSIP_POOL_LEN_DIALOG		1200
 #define PJSIP_POOL_INC_DIALOG		512
 
-/* Transport manager hash table size (must be 2^n-1). */
-#define PJSIP_TPMGR_HTABLE_SIZE		31
-
 /* Transport idle timeout before it's destroyed. */
 #define PJSIP_TRANSPORT_IDLE_TIME	30
 
 /* Max entries to process in timer heap per poll. */
 #define PJSIP_MAX_TIMED_OUT_ENTRIES	10
 
-/* Module related constants. */
-#define PJSIP_MAX_MODULE		16
-
 /* Maximum header types. */
 #define PJSIP_MAX_HEADER_TYPES		64