aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--include/tinyrad.h1
-rw-r--r--lib/libtinyrad/lmemory.c27
-rw-r--r--src/tinyrad.c2
-rw-r--r--tests/test-options.c2
4 files changed, 30 insertions, 2 deletions
diff --git a/include/tinyrad.h b/include/tinyrad.h
index b0b08e4..fa3ed50 100644
--- a/include/tinyrad.h
+++ b/include/tinyrad.h
@@ -682,6 +682,7 @@ tinyrad_get_option(
682_TINYRAD_F int 682_TINYRAD_F int
683tinyrad_initialize( 683tinyrad_initialize(
684 TinyRad ** trp, 684 TinyRad ** trp,
685 TinyRadDict * dict,
685 const char * url, 686 const char * url,
686 uint64_t opts ); 687 uint64_t opts );
687 688
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c
index 65a3d21..8eb03d1 100644
--- a/lib/libtinyrad/lmemory.c
+++ b/lib/libtinyrad/lmemory.c
@@ -53,6 +53,8 @@
53#include <netdb.h> 53#include <netdb.h>
54#include <assert.h> 54#include <assert.h>
55 55
56#include "ldict.h"
57
56 58
57/////////////////// 59///////////////////
58// // 60// //
@@ -120,6 +122,9 @@ tinyrad_tiyrad_free(
120 122
121 assert(tr != NULL); 123 assert(tr != NULL);
122 124
125 if ((tr->dict))
126 tinyrad_obj_release(&tr->dict->obj);
127
123 if ((tr->trud)) 128 if ((tr->trud))
124 tinyrad_urldesc_free(tr->trud); 129 tinyrad_urldesc_free(tr->trud);
125 tr->trud = NULL; 130 tr->trud = NULL;
@@ -268,6 +273,7 @@ tinyrad_get_option(
268int 273int
269tinyrad_initialize( 274tinyrad_initialize(
270 TinyRad ** trp, 275 TinyRad ** trp,
276 TinyRadDict * dict,
271 const char * url, 277 const char * url,
272 uint64_t opts ) 278 uint64_t opts )
273{ 279{
@@ -351,6 +357,27 @@ tinyrad_initialize(
351 return(rc); 357 return(rc);
352 }; 358 };
353 359
360 // duplicate or initialize dictionary
361 if ((dict))
362 {
363 if ((rc = tinyrad_dict_dup(&tr->dict, dict)) != TRAD_SUCCESS)
364 {
365 tinyrad_tiyrad_free(tr);
366 return(rc);
367 };
368 } else {
369 if ((rc = tinyrad_dict_initialize(&tr->dict, 0)) != TRAD_SUCCESS)
370 {
371 tinyrad_tiyrad_free(tr);
372 return(rc);
373 };
374 if ((rc = tinyrad_dict_defaults(tr->dict, NULL, 0)) != TRAD_SUCCESS)
375 {
376 tinyrad_tiyrad_free(tr);
377 return(rc);
378 };
379 };
380
354 *trp = tinyrad_obj_retain(&tr->obj); 381 *trp = tinyrad_obj_retain(&tr->obj);
355 382
356 return(TRAD_SUCCESS); 383 return(TRAD_SUCCESS);
diff --git a/src/tinyrad.c b/src/tinyrad.c
index 97c5fb1..8c5a822 100644
--- a/src/tinyrad.c
+++ b/src/tinyrad.c
@@ -215,7 +215,7 @@ int main(int argc, char * argv[])
215 return(0); 215 return(0);
216 }; 216 };
217 217
218 if ((tinyrad_initialize(&tr, url, 0)) != TRAD_SUCCESS) 218 if ((tinyrad_initialize(&tr, dict, url, 0)) != TRAD_SUCCESS)
219 { 219 {
220 tinyrad_free(dict); 220 tinyrad_free(dict);
221 return(1); 221 return(1);
diff --git a/tests/test-options.c b/tests/test-options.c
index 4a1b250..a72cda9 100644
--- a/tests/test-options.c
+++ b/tests/test-options.c
@@ -210,7 +210,7 @@ int main( int argc, char * argv[] )
210 tinyrad_set_option(NULL, TRAD_OPT_DEBUG_LEVEL, &debug); 210 tinyrad_set_option(NULL, TRAD_OPT_DEBUG_LEVEL, &debug);
211 211
212 // initialize tinyrad 212 // initialize tinyrad
213 if ((rc = tinyrad_initialize(&tr, "radius://localhost/secret", 0)) != TRAD_SUCCESS) 213 if ((rc = tinyrad_initialize(&tr, NULL, "radius://localhost/secret", 0)) != TRAD_SUCCESS)
214 return(our_error(opts, NULL, "tinyrad_initialize(tr, \"radius://localhost/secret\", 0): %s", tinyrad_strerror(rc))); 214 return(our_error(opts, NULL, "tinyrad_initialize(tr, \"radius://localhost/secret\", 0): %s", tinyrad_strerror(rc)));
215 215
216 // TRAD_OPT_DESC 216 // TRAD_OPT_DESC