+
+ cu->cu_retry_timeout.tv_sec = 1;
+ cu->cu_retry_timeout.tv_usec = 0;
+ if (retry_timeout != NULL) cu->cu_retry_timeout = *retry_timeout;
+
+ cu->cu_total_timeout.tv_sec = -1;
+ cu->cu_total_timeout.tv_usec = -1;
+ if (total_timeout != NULL) cu->cu_total_timeout = *total_timeout;
+
+ rfd = open("/dev/random", O_RDONLY, 0);
+ if ((rfd < 0) || (read(rfd, &call_msg.rm_xid, sizeof(call_msg.rm_xid)) != sizeof(call_msg.rm_xid)))
+ {
+ gettimeofday(&now, (struct timezone *)0);
+ call_msg.rm_xid = getpid() ^ now.tv_sec ^ now.tv_usec;
+ }
+
+ if (rfd > 0) close(rfd);
+