printf("%s:%04d: %s", file, line, str);
}
-websocket_return_t websocket_tls_init(int param, websocket_t *data, mbedtls_ssl_config *conf, mbedtls_x509_crt *cert, mbedtls_pk_context *pkey, mbedtls_entropy_context *entropy, mbedtls_ctr_drbg_context *ctr_drbg, mbedtls_ssl_cache_context *cache)
+websocket_return_t websocket_tls_init(websocket_t *data, mbedtls_ssl_config *conf, mbedtls_x509_crt *cert, mbedtls_pk_context *pkey, mbedtls_entropy_context *entropy, mbedtls_ctr_drbg_context *ctr_drbg, mbedtls_ssl_cache_context *cache)
{
int r;
const char *crt = mbedtls_test_srv_crt;
size_t cacrt_len = mbedtls_test_cas_pem_len;
size_t key_len = mbedtls_test_srv_key_len;
- if (param) {
+ if (data->state == WEBSOCKET_RUN_CLIENT) {
crt = mbedtls_test_cli_crt;
key = mbedtls_test_cli_key;
ca_crt = mbedtls_test_cas_pem;
/* 3. Setup ssl stuff */
printf(" . Setting up the SSL data...");
- if ((r = mbedtls_ssl_config_defaults(conf, param ? MBEDTLS_SSL_IS_CLIENT : MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0) {
+ if ((r = mbedtls_ssl_config_defaults(conf, (data->state == WEBSOCKET_RUN_CLIENT) ? MBEDTLS_SSL_IS_CLIENT : MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0) {
printf("Error: mbedtls_ssl_config_defaults returned %d\n", r);
return WEBSOCKET_INIT_ERROR;
}
mbedtls_ssl_conf_rng(conf, mbedtls_ctr_drbg_random, ctr_drbg);
mbedtls_ssl_conf_dbg(conf, websocket_tls_debug, stdout);
- if (!param) {
+ if (data->state == WEBSOCKET_RUN_SERVER) {
mbedtls_ssl_cache_init(cache);
mbedtls_ssl_conf_session_cache(conf, cache, mbedtls_ssl_cache_get, mbedtls_ssl_cache_set);
}
websocket_cli->fd = -1;
websocket_cli->cb = &cb;
websocket_cli->tls_enabled = tls;
+ websocket_cli->state = WEBSOCKET_RUN_CLIENT; // websocket state assigned here temporary before easy_TLS api
/* TLS init routine */
if (tls) {
#ifdef MBEDTLS_DEBUG_C
mbedtls_debug_set_threshold(MBEDTLS_DEBUG_LEVEL);
#endif
- if ((r = websocket_tls_init(1, websocket_cli, &conf, &cert, &pkey, &entropy, &ctr_drbg, &cache)) != WEBSOCKET_SUCCESS) {
+ if ((r = websocket_tls_init(websocket_cli, &conf, &cert, &pkey, &entropy, &ctr_drbg, &cache)) != WEBSOCKET_SUCCESS) {
printf("fail to init TLS, error: %d\n", r);
goto WEB_CLI_EXIT;
}
}
/* wait until every message is tested. */
- while (websocket_cli->state == WEBSOCKET_RUNNING) {
+ while (websocket_cli->state == WEBSOCKET_RUN_CLIENT) {
/* all echo back message received */
if (received_cnt == send_cnt) {
printf("all message was received well\n");
websocket_srv->fd = -1;
websocket_srv->cb = &cb;
websocket_srv->tls_enabled = tls;
+ websocket_srv->state = WEBSOCKET_RUN_SERVER; // websocket state assigned here temporary before easy_TLS api
/* TLS init routine */
if (tls) {
#ifdef MBEDTLS_DEBUG_C
mbedtls_debug_set_threshold(MBEDTLS_DEBUG_LEVEL);
#endif
- if ((r = websocket_tls_init(0, websocket_srv, &conf, &cert, &pkey, &entropy, &ctr_drbg, &cache)) != WEBSOCKET_SUCCESS) {
+ if ((r = websocket_tls_init(websocket_srv, &conf, &cert, &pkey, &entropy, &ctr_drbg, &cache)) != WEBSOCKET_SUCCESS) {
printf("fail to init TLS\n");
goto WEB_SRV_EXIT;
}
ws_srv_table[i].state = WEBSOCKET_STOP;
}
- init_server->state = WEBSOCKET_RUNNING;
+ init_server->state = WEBSOCKET_RUN_SERVER;
while (init_server->state != WEBSOCKET_STOP) {
FD_ZERO(&init_server_read_fds);
FD_SET(listen_fd, &init_server_read_fds);
return NULL;
}
- websocket_update_state(&ws_srv_table[i], WEBSOCKET_RUNNING);
+ websocket_update_state(&ws_srv_table[i], WEBSOCKET_RUN_SERVER);
return &ws_srv_table[i];
}
return WEBSOCKET_ALLOCATION_ERROR;
}
- websocket_update_state(client, WEBSOCKET_RUNNING);
+ websocket_update_state(client, WEBSOCKET_RUN_CLIENT);
+
+ //TODO : all TLS initializing code will be moved from example to here
if (websocket_connect(client, host, port) != WEBSOCKET_SUCCESS) {
r = WEBSOCKET_CONNECT_ERROR;
return WEBSOCKET_ALLOCATION_ERROR;
}
+ //TODO : all TLS initializing code will be moved from example to here
+
port = init_server->tls_enabled ? 443 : 80;
if (websocket_listen(&(init_server->fd), port) != WEBSOCKET_SUCCESS) {