diff options
| -rw-r--r-- | include/tinyrad.h | 1 | ||||
| -rw-r--r-- | lib/libtinyrad/lmemory.c | 27 | ||||
| -rw-r--r-- | src/tinyrad.c | 2 | ||||
| -rw-r--r-- | tests/test-options.c | 2 |
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 |
| 683 | tinyrad_initialize( | 683 | tinyrad_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( | |||
| 268 | int | 273 | int |
| 269 | tinyrad_initialize( | 274 | tinyrad_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 |
