X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=e03d207adf8a639414b21c098885ad1f3f7263db;hp=aa8fdda5425dae48dc6b47a8009795603bbefcd3;hb=62414974b55d78a67d4170da85091a915087219f;hpb=2abba90245f87fab096edfc3faf7df61646b713f diff --git a/server.c b/server.c index aa8fdda5..e03d207a 100644 --- a/server.c +++ b/server.c @@ -325,25 +325,30 @@ err: static void init_random_seed(void) { - int fd, ret = -1; unsigned int seed; - size_t len = sizeof(unsigned int); + int fd, ret = para_open("/dev/urandom", O_RDONLY, 0); - fd = open("/dev/urandom", O_RDONLY); - if (fd < 0) + if (ret < 0) + goto err; + fd = ret; + ret = read(fd, &seed, sizeof(seed)); + if (ret < 0) { + ret = -ERRNO_TO_PARA_ERROR(errno); goto out; - ret = -2; - if (read(fd, &seed, len) != len) + } + if (ret != sizeof(seed)) { + ret = -ERRNO_TO_PARA_ERROR(EIO); goto out; + } srandom(seed); ret = 1; out: - if (fd >= 0) - close(fd); - if (ret > 0) + close(fd); + if (ret >= 0) return; - PARA_EMERG_LOG("can not seed pseudo random generator (ret = %d)\n", - ret); +err: + PARA_EMERG_LOG("can not seed pseudo random number generator: %s\n", + para_strerror(-ret)); exit(EXIT_FAILURE); } @@ -376,7 +381,6 @@ static void init_afs(void) (unsigned) afs_socket_cookie); } - static unsigned server_init(int argc, char **argv) { /* connector's address information */