diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-02-21 21:36:34 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-02-21 21:36:34 +0000 |
commit | 2fe9c49e7d023c2efcc69ff835c49a3c3d8662e5 (patch) | |
tree | ce9de86943760d878966a43bbb9978895d84e170 /pjsip/src/pjsua-lib | |
parent | 9dafbac6b6e70d84ed1f925c1ec1ee00b5c4411d (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.c | 31 |
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(); |