Implement __set_dtls() in terms of __get_dtls()
authorKevin Klues <klueska@cs.berkeley.edu>
Tue, 25 Aug 2015 00:49:11 +0000 (17:49 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 2 Sep 2015 17:50:05 +0000 (13:50 -0400)
The functionality contained in __get_dtls() was being duplicated in
__set_dtls().  This commit consolidates them.

user/parlib/dtls.c

index f29f789..7357605 100644 (file)
@@ -126,15 +126,22 @@ void dtls_key_delete(dtls_key_t key)
   __maybe_free_dtls_key(key);
 }
 
-static inline void __set_dtls(dtls_data_t *dtls_data, dtls_key_t key, void *dtls)
+static inline void *__get_dtls(dtls_data_t *dtls_data, dtls_key_t key)
 {
   assert(key);
-  __sync_fetch_and_add(&key->ref_count, 1);
 
   struct dtls_value *v = NULL;
   TAILQ_FOREACH(v, &dtls_data->list, link)
-    if(v->key == key) break;
+    if(v->key == key) return v->dtls;
+  return v;
+}
+
+static inline void __set_dtls(dtls_data_t *dtls_data, dtls_key_t key, void *dtls)
+{
+  assert(key);
+  __sync_fetch_and_add(&key->ref_count, 1);
 
+  struct dtls_value *v = __get_dtls(dtls_data, key);
   if (!v) {
     v = __allocate_dtls_value();
     v->key = key;
@@ -143,16 +150,6 @@ static inline void __set_dtls(dtls_data_t *dtls_data, dtls_key_t key, void *dtls
   v->dtls = dtls;
 }
 
-static inline void *__get_dtls(dtls_data_t *dtls_data, dtls_key_t key)
-{
-  assert(key);
-
-  struct dtls_value *v = NULL;
-  TAILQ_FOREACH(v, &dtls_data->list, link)
-    if(v->key == key) return v->dtls;
-  return v;
-}
-
 static inline void __destroy_dtls(dtls_data_t *dtls_data)
 {
  struct dtls_value *v,*n;