Exemple #1
0
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);
}
Exemple #2
0
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;
}