X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fhs_apps%2Fhttp_server.c;h=e1674d5d2f179afaf7f85370e0bacba71e1a703f;hb=a5a9efd4d;hp=b0e31b9645c6414d213475f5a7fe2372ccaff851;hpb=7d941d45bc649f760c650dab3e715585a61d9cf9;p=vpp.git diff --git a/src/plugins/hs_apps/http_server.c b/src/plugins/hs_apps/http_server.c index b0e31b9645c..e1674d5d2f1 100644 --- a/src/plugins/hs_apps/http_server.c +++ b/src/plugins/hs_apps/http_server.c @@ -73,6 +73,9 @@ typedef struct /* process node index for evnt scheduling */ u32 node_index; + /* Cert key pair for tls */ + u32 ckpair_index; + tw_timer_wheel_2t_1w_2048sl_t tw; clib_spinlock_t tw_lock; @@ -136,9 +139,10 @@ static void http_server_session_free (http_session_t * hs) { http_server_main_t *hsm = &http_server_main; - pool_put (hsm->sessions[hs->thread_index], hs); + u32 thread = hs->thread_index; if (CLIB_DEBUG) memset (hs, 0xfa, sizeof (*hs)); + pool_put (hsm->sessions[thread], hs); } static void @@ -238,7 +242,7 @@ static const char *http_response = "Expires: Mon, 11 Jan 1970 10:10:10 GMT\r\n" "Connection: close \r\n" "Pragma: no-cache\r\n" - "Content-Length: %d\r\n\r\n%s"; + "Content-Length: %d\r\n\r\n%v"; static const char *http_error_template = "HTTP/1.1 %s\r\n" @@ -711,8 +715,7 @@ static session_cb_vft_t http_server_session_cb_vft = { static int http_server_attach () { - vnet_app_add_tls_cert_args_t _a_cert, *a_cert = &_a_cert; - vnet_app_add_tls_key_args_t _a_key, *a_key = &_a_key; + vnet_app_add_cert_key_pair_args_t _ck_pair, *ck_pair = &_ck_pair; http_server_main_t *hsm = &http_server_main; u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; @@ -745,17 +748,13 @@ http_server_attach () vec_free (a->name); hsm->app_index = a->app_index; - clib_memset (a_cert, 0, sizeof (*a_cert)); - a_cert->app_index = a->app_index; - vec_validate (a_cert->cert, test_srv_crt_rsa_len); - clib_memcpy_fast (a_cert->cert, test_srv_crt_rsa, test_srv_crt_rsa_len); - vnet_app_add_tls_cert (a_cert); - - clib_memset (a_key, 0, sizeof (*a_key)); - a_key->app_index = a->app_index; - vec_validate (a_key->key, test_srv_key_rsa_len); - clib_memcpy_fast (a_key->key, test_srv_key_rsa, test_srv_key_rsa_len); - vnet_app_add_tls_key (a_key); + clib_memset (ck_pair, 0, sizeof (*ck_pair)); + ck_pair->cert = (u8 *) test_srv_crt_rsa; + ck_pair->key = (u8 *) test_srv_key_rsa; + ck_pair->cert_len = test_srv_crt_rsa_len; + ck_pair->key_len = test_srv_key_rsa_len; + vnet_app_add_cert_key_pair (ck_pair); + hsm->ckpair_index = ck_pair->index; return 0; } @@ -763,14 +762,24 @@ http_server_attach () static int http_server_listen () { + session_endpoint_cfg_t sep = SESSION_ENDPOINT_CFG_NULL; http_server_main_t *hsm = &http_server_main; vnet_listen_args_t _a, *a = &_a; + char *uri = "tcp://0.0.0.0/80"; + clib_memset (a, 0, sizeof (*a)); a->app_index = hsm->app_index; - a->uri = "tcp://0.0.0.0/80"; + if (hsm->uri) - a->uri = (char *) hsm->uri; - return vnet_bind_uri (a); + uri = (char *) hsm->uri; + + if (parse_uri (uri, &sep)) + return -1; + + clib_memcpy (&a->sep_ext, &sep, sizeof (sep)); + a->sep_ext.ckpair_index = hsm->ckpair_index; + + return vnet_listen (a); } static void