* [Patch 3/4] libcldc: add cldc_init
@ 2009-08-08 6:28 Pete Zaitcev
0 siblings, 0 replies; only message in thread
From: Pete Zaitcev @ 2009-08-08 6:28 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Project Hail List
A missing call to srand() was causing us trouble since libcldc relies
on rand(). Since rand() is a rather ugly function and we may want to
change the implementation later, create a way to initialize the library.
Signed-Off-By: Pete Zaitcev <zaitcev@redhat.com>
diff --git a/include/cldc.h b/include/cldc.h
index 491ec36..f625d5e 100644
--- a/include/cldc.h
+++ b/include/cldc.h
@@ -156,11 +156,11 @@ struct cld_dirent_cur {
* @param buflen Length of received packet
* @return Zero for success, non-zero on error
*/
-
extern int cldc_receive_pkt(struct cldc_session *sess,
const void *net_addr, size_t net_addrlen,
const void *buf, size_t buflen);
+extern void cldc_init(void);
extern int cldc_new_sess(const struct cldc_ops *ops,
const struct cldc_call_opts *copts,
const void *addr, size_t addr_len,
diff --git a/lib/cldc.c b/lib/cldc.c
index 420c2be..5cccc63 100644
--- a/lib/cldc.c
+++ b/lib/cldc.c
@@ -1359,3 +1359,13 @@ char *cldc_dirent_name(struct cld_dirent_cur *dc)
return s;
}
+/*
+ * For extra safety, call cldc_init after g_thread_init, if present.
+ * Currently we just call srand(), but since we use GLib, we may need
+ * to add some Glib stuff here and that must come after g_thread_init.
+ */
+void cldc_init()
+{
+ srand(time(NULL) ^ getpid()); // for __cld_rand64 et.al.
+}
+
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-08-08 6:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-08 6:28 [Patch 3/4] libcldc: add cldc_init Pete Zaitcev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.