summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-02-21 21:36:34 +0000
committerBenny Prijono <bennylp@teluu.com>2008-02-21 21:36:34 +0000
commit2fe9c49e7d023c2efcc69ff835c49a3c3d8662e5 (patch)
treece9de86943760d878966a43bbb9978895d84e170 /pjsip/src/pjsua-lib
parent9dafbac6b6e70d84ed1f925c1ec1ee00b5c4411d (diff)
Ticket #412: increased randomness of guid_simple.c to 192-bits, and seed random number generator in pjsua_core.c
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1815 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index edb537c4..9f0ff6e7 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -511,6 +511,35 @@ static int worker_thread(void *arg)
}
+/* Init random seed */
+static void init_random_seed(void)
+{
+ pj_sockaddr addr;
+ const pj_str_t *hostname;
+ pj_uint32_t pid;
+ pj_time_val t;
+ unsigned seed=0;
+
+ /* Add hostname */
+ hostname = pj_gethostname();
+ seed = pj_hash_calc(seed, hostname->ptr, (int)hostname->slen);
+
+ /* Add primary IP address */
+ if (pj_gethostip(pj_AF_INET(), &addr)==PJ_SUCCESS)
+ seed = pj_hash_calc(seed, &addr.ipv4.sin_addr, 4);
+
+ /* Get timeofday */
+ pj_gettimeofday(&t);
+ seed = pj_hash_calc(seed, &t, sizeof(t));
+
+ /* Add PID */
+ pid = pj_getpid();
+ seed = pj_hash_calc(seed, &pid, sizeof(pid));
+
+ /* Init random seed */
+ pj_srand(seed);
+}
+
/*
* Instantiate pjsua application.
*/
@@ -528,6 +557,8 @@ PJ_DEF(pj_status_t) pjsua_create(void)
status = pj_init();
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+ /* Init random seed */
+ init_random_seed();
/* Init PJLIB-UTIL: */
status = pjlib_util_init();