static void logging_types(void **state) { selene_conf_t *conf = NULL; selene_t *s = NULL; log_cb_t b; selene_conf_create(&conf); SLN_ERR(selene_conf_use_reasonable_defaults(conf)); SLN_ERR(selene_server_create(conf, &s)); SLN_ASSERT_CONTEXT(s); sln_log_level_set(s, SLN_LOG_EVERYTHING); selene_handler_set(s, SELENE_EVENT_LOG_MSG, log_cb, &b); b.cmp = "CRT: test:0\n"; slnCrit(s, "test:%u", 0); b.cmp = "ERR: test:1\n"; slnErr(s, "test:%u", 1); b.cmp = "INF: test:2\n"; slnInfo(s, "test:%u", 2); b.cmp = "WRN: test:3\n"; slnWarn(s, "test:%u", 3); b.cmp = "DBG: test:4\n"; slnDbg(s, "test:%u", 4); b.cmp = "TRC: test:5\n"; slnTrace(s, "test:%u", 5); b.cmp = "UNK: test:6\n"; sln_log_fmt(s, 44, "test:%u", 6); sln_log_level_set(s, SLN_LOG_NOTHING); slnDbg(s, "test:%u", 4); selene_destroy(s); selene_conf_destroy(conf); }
selene_error_t* sln_native_handshake_state_machine(selene_t *s, sln_native_baton_t *baton) { selene_error_t* err; enter_state_machine: slnDbg(s, "enter handshake_state_machine=%d", baton->handshake); switch (baton->handshake) { case SLN_NATIVE_HANDSHAKE_CLIENT_SEND_HELLO: err = sln_native_io_handshake_client_hello(s, baton); if (err) { return err; } baton->handshake = SLN_NATIVE_HANDSHAKE_CLIENT_WAIT_SERVER_HELLO_DONE; break; case SLN_NATIVE_HANDSHAKE_CLIENT_WAIT_SERVER_HELLO_DONE: break; case SLN_NATIVE_HANDSHAKE_CLIENT_SEND_FINISHED: break; case SLN_NATIVE_HANDSHAKE_CLIENT_WAIT_SERVER_FINISHED: break; case SLN_NATIVE_HANDSHAKE_CLIENT_APPDATA: break; /*** * Start Server Methods. */ case SLN_NATIVE_HANDSHAKE_SERVER_WAIT_CLIENT_HELLO: if (!SLN_BRIGADE_EMPTY(s->bb.in_enc)) { err = sln_native_io_tls_read(s, baton); if (err) { return err; } } if (!SLN_BRIGADE_EMPTY(baton->in_handshake)) { err = sln_native_io_handshake_read_client_hello(s, baton); if (err) { return err; } if (baton->handshake != SLN_NATIVE_HANDSHAKE_SERVER_WAIT_CLIENT_HELLO) { goto enter_state_machine; } } break; case SLN_NATIVE_HANDSHAKE_SERVER_SEND_SERVER_HELLO_DONE: break; case SLN_NATIVE_HANDSHAKE_SERVER_WAIT_CLIENT_FINISHED: break; case SLN_NATIVE_HANDSHAKE_SERVER_SNED_FINISHED: break; case SLN_NATIVE_HANDSHAKE_SERVER_APPDATA: break; case SLN_NATIVE_HANDSHAKE__UNUSED0: case SLN_NATIVE_HANDSHAKE__MAX: /* TODO: better handle this */ abort(); break; //default: } if (!SLN_BRIGADE_EMPTY(s->bb.out_enc)) { slnDbg(s, "Encrypted data waiting"); SELENE_ERR(selene_publish(s, SELENE_EVENT_IO_OUT_ENC)); } if (!SLN_BRIGADE_EMPTY(s->bb.out_cleartext)) { slnDbg(s, "Cleartext data waiting"); SELENE_ERR(selene_publish(s, SELENE_EVENT_IO_OUT_CLEAR)); } slnDbg(s, "exit handshake_state_machine=%d", baton->handshake); return SELENE_SUCCESS; }