| 7657 | } |
| 7658 | |
| 7659 | TSReturnCode |
| 7660 | TSHttpTxnConfigStringGet(TSHttpTxn txnp, TSOverridableConfigKey conf, const char **value, int *length) |
| 7661 | { |
| 7662 | sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); |
| 7663 | sdk_assert(sdk_sanity_check_null_ptr((void **)value) == TS_SUCCESS); |
| 7664 | sdk_assert(sdk_sanity_check_null_ptr((void *)length) == TS_SUCCESS); |
| 7665 | |
| 7666 | HttpSM *sm = reinterpret_cast<HttpSM *>(txnp); |
| 7667 | |
| 7668 | switch (conf) { |
| 7669 | case TS_CONFIG_HTTP_RESPONSE_SERVER_STR: |
| 7670 | *value = sm->t_state.txn_conf->proxy_response_server_string; |
| 7671 | *length = sm->t_state.txn_conf->proxy_response_server_string_len; |
| 7672 | break; |
| 7673 | case TS_CONFIG_HTTP_GLOBAL_USER_AGENT_HEADER: |
| 7674 | *value = sm->t_state.txn_conf->global_user_agent_header; |
| 7675 | *length = sm->t_state.txn_conf->global_user_agent_header_size; |
| 7676 | break; |
| 7677 | case TS_CONFIG_BODY_FACTORY_TEMPLATE_BASE: |
| 7678 | *value = sm->t_state.txn_conf->body_factory_template_base; |
| 7679 | *length = sm->t_state.txn_conf->body_factory_template_base_len; |
| 7680 | break; |
| 7681 | case TS_CONFIG_HTTP_SERVER_SESSION_SHARING_MATCH: |
| 7682 | *value = sm->t_state.txn_conf->server_session_sharing_match_str; |
| 7683 | *length = *value ? strlen(*value) : 0; |
| 7684 | break; |
| 7685 | default: { |
| 7686 | MgmtConverter const *conv; |
| 7687 | const void *src = _conf_to_memberp(conf, sm->t_state.txn_conf, conv); |
| 7688 | if (src != nullptr && conv != nullptr && conv->load_string) { |
| 7689 | auto sv = conv->load_string(src); |
| 7690 | *value = sv.data(); |
| 7691 | *length = sv.size(); |
| 7692 | } else { |
| 7693 | return TS_ERROR; |
| 7694 | } |
| 7695 | break; |
| 7696 | } |
| 7697 | } |
| 7698 | |
| 7699 | return TS_SUCCESS; |
| 7700 | } |
| 7701 | |
| 7702 | TSReturnCode |
| 7703 | TSHttpTxnConfigFind(const char *name, int length, TSOverridableConfigKey *conf, TSRecordDataType *type) |