diff options
-rw-r--r-- | src/or/statefile.c | 3 | ||||
-rw-r--r-- | src/or/statefile.h | 4 | ||||
-rw-r--r-- | src/test/test_pt.c | 27 |
3 files changed, 31 insertions, 3 deletions
diff --git a/src/or/statefile.c b/src/or/statefile.c index aac8850b1..8736c35a2 100644 --- a/src/or/statefile.c +++ b/src/or/statefile.c @@ -4,6 +4,7 @@ * Copyright (c) 2007-2013, The Tor Project, Inc. */ /* See LICENSE for licensing information */ +#define STATEFILE_PRIVATE #include "or.h" #include "circuitstats.h" #include "config.h" @@ -449,7 +450,7 @@ or_state_save(time_t now) /** Return the config line for transport <b>transport</b> in the current state. * Return NULL if there is no config line for <b>transport</b>. */ -static config_line_t * +STATIC config_line_t * get_transport_in_state_by_name(const char *transport) { or_state_t *or_state = get_or_state(); diff --git a/src/or/statefile.h b/src/or/statefile.h index 762b0f5ee..c1413ff95 100644 --- a/src/or/statefile.h +++ b/src/or/statefile.h @@ -18,5 +18,9 @@ int or_state_load(void); int or_state_loaded(void); void or_state_free_all(void); +#ifdef STATEFILE_PRIVATE +STATIC config_line_t *get_transport_in_state_by_name(const char *transport); +#endif + #endif diff --git a/src/test/test_pt.c b/src/test/test_pt.c index e4aa39f86..433f85dfb 100644 --- a/src/test/test_pt.c +++ b/src/test/test_pt.c @@ -6,6 +6,7 @@ #include "orconfig.h" #define PT_PRIVATE #define UTIL_PRIVATE +#define STATEFILE_PRIVATE #include "or.h" #include "config.h" #include "confparse.h" @@ -291,10 +292,10 @@ tor_get_lines_from_handle_replacement(STDIN_HANDLE *handle, /* Generate some dummy CMETHOD lines the first 5 times. The 6th time, send 'CMETHODS DONE' to finish configuring the proxy. */ if (times_called++ != 5) { - smartlist_add_asprintf(retval_sl, "CMETHOD mock%d socks5 127.0.0.1:555%d", + smartlist_add_asprintf(retval_sl, "SMETHOD mock%d 127.0.0.1:555%d", times_called, times_called); } else { - smartlist_add(retval_sl, tor_strdup("CMETHODS DONE")); + smartlist_add(retval_sl, tor_strdup("SMETHODS DONE")); } return retval_sl; @@ -341,6 +342,7 @@ test_pt_configure_proxy(void *arg) mp->process_handle = tor_malloc_zero(sizeof(process_handle_t)); mp->argv = tor_malloc_zero(sizeof(char*)*2); mp->argv[0] = tor_strdup("<testcase>"); + mp->is_server = 1; /* Test the return value of configure_proxy() by calling it some times while it is uninitialized and then finally finalizing its @@ -362,6 +364,27 @@ test_pt_configure_proxy(void *arg) /* check the mp state */ test_assert(mp->conf_state == PT_PROTO_COMPLETED); + { /* check that the transport info were saved properly in the tor state */ + config_line_t *transport_in_state = NULL; + smartlist_t *transport_info_sl = smartlist_new(); + char *name_of_transport = NULL; + char *bindaddr = NULL; + + /* Get the bindaddr for "mock1" and check it against the bindaddr + that the mocked tor_get_lines_from_handle() generated. */ + transport_in_state = get_transport_in_state_by_name("mock1"); + test_assert(transport_in_state); + smartlist_split_string(transport_info_sl, transport_in_state->value, + NULL, 0, 0); + name_of_transport = smartlist_get(transport_info_sl, 0); + bindaddr = smartlist_get(transport_info_sl, 1); + tt_str_op(name_of_transport, ==, "mock1"); + tt_str_op(bindaddr, ==, "127.0.0.1:5551"); + + SMARTLIST_FOREACH(transport_info_sl, char *, cp, tor_free(cp)); + smartlist_free(transport_info_sl); + } + done: tor_free(dummy_state); UNMOCK(tor_get_lines_from_handle); |