X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Ftests%2Ftest_silcnet.c;h=7b1551cebbd5859dba12740319c92f6e98407735;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=2931bd7475ea13d51c59078602dfea91a33f89ec;hpb=68f0f5b85dd7afe83b0982df73f471547c514453;p=silc.git diff --git a/lib/silcutil/tests/test_silcnet.c b/lib/silcutil/tests/test_silcnet.c index 2931bd74..7b1551ce 100644 --- a/lib/silcutil/tests/test_silcnet.c +++ b/lib/silcutil/tests/test_silcnet.c @@ -10,9 +10,9 @@ typedef struct { SilcFSMThreadStruct thread; SilcNetListener server; SilcStream client_stream; - SilcNetStatus client_status; + SilcResult client_status; SilcStream server_stream; - SilcNetStatus server_status; + SilcResult server_status; SilcBool success; } *Foo; @@ -23,7 +23,7 @@ SILC_FSM_STATE(test_st_finish); SILC_FSM_STATE(test_st_connect); SILC_FSM_STATE(test_st_connected); -static void test_accept_connection(SilcNetStatus status, SilcStream stream, +static void test_accept_connection(SilcResult status, SilcStream stream, void *context) { Foo f = context; @@ -33,7 +33,7 @@ static void test_accept_connection(SilcNetStatus status, SilcStream stream, SILC_FSM_EVENT_SIGNAL(&f->sema); } -static void test_connected(SilcNetStatus status, SilcStream stream, +static void test_connected(SilcResult status, SilcStream stream, void *context) { Foo f = context; @@ -64,7 +64,7 @@ SILC_FSM_STATE(test_st_connected) SILC_LOG_DEBUG(("test_st_connected")); - if (f->server_status != SILC_NET_OK) { + if (f->server_status != SILC_OK) { SILC_LOG_DEBUG(("Creating connection failed")); return SILC_FSM_FINISH; } @@ -78,9 +78,40 @@ SILC_FSM_STATE(test_st_connected) SILC_FSM_STATE(test_st_start) { Foo f = fsm_context; + int ports[3]; + SilcUInt16 *ret_ports; + SilcUInt32 port_count; SILC_LOG_DEBUG(("test_st_start")); + SILC_LOG_DEBUG(("Creating network listener to ports 2000, 3000 and 4000")); + ports[0] = 2000; + ports[1] = 3000; + ports[2] = 4000; + f->server = silc_net_tcp_create_listener2(NULL, ports, 3, FALSE, TRUE, TRUE, + silc_fsm_get_schedule(fsm), + test_accept_connection, f); + if (!f->server) { + /** Creating network listener failed */ + SILC_LOG_DEBUG(("Listener creation failed")); + silc_fsm_next(fsm, test_st_finish); + return SILC_FSM_CONTINUE; + } + + ret_ports = silc_net_listener_get_port(f->server, &port_count); + if (!ret_ports) { + SILC_LOG_DEBUG(("Listener does not work")); + silc_fsm_next(fsm, test_st_finish); + return SILC_FSM_CONTINUE; + } + SILC_LOG_DEBUG(("Bound to port %d", ret_ports[0])); + SILC_LOG_DEBUG(("Bound to port %d", ret_ports[1])); + SILC_LOG_DEBUG(("Bound to port %d", ret_ports[2])); + silc_free(ret_ports); + + /* Close this listener and create new one */ + silc_net_close_listener(f->server); + SILC_LOG_DEBUG(("Creating network listener")); f->server = silc_net_tcp_create_listener(NULL, 0, 5000, TRUE, TRUE, silc_fsm_get_schedule(fsm), @@ -113,7 +144,7 @@ SILC_FSM_STATE(test_st_second) SILC_FSM_EVENT_WAIT(&f->sema); - if (f->client_status != SILC_NET_OK) { + if (f->client_status != SILC_OK) { /** Accepting new connection failed */ SILC_LOG_DEBUG(("Accepting failed %d", f->client_status)); silc_fsm_next(fsm, test_st_finish); @@ -168,11 +199,11 @@ int main(int argc, char **argv) if (argc > 1 && !strcmp(argv[1], "-d")) { silc_log_debug(TRUE); silc_log_debug_hexdump(TRUE); - silc_log_set_debug_string("*net*,*stream*"); + silc_log_set_debug_string("*net*,*stream*,*errno*"); } SILC_LOG_DEBUG(("Allocating scheduler")); - schedule = silc_schedule_init(0, NULL); + schedule = silc_schedule_init(0, NULL, NULL); f = silc_calloc(1, sizeof(*f)); if (!f)