MCPcopy Create free account
hub / github.com/apache/trafficserver / globalHookHandler

Function globalHookHandler

plugins/lua/ts_lua.cc:674–828  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

672}
673
674static int
675globalHookHandler(TSCont contp, TSEvent event ATS_UNUSED, void *edata)
676{
677 TSHttpTxn txnp = (TSHttpTxn)edata;
678
679 TSMBuffer bufp;
680 TSMLoc hdr_loc;
681 TSMLoc url_loc;
682
683 int ret;
684 uint64_t req_id;
685 TSCont txn_contp;
686
687 lua_State *l;
688
689 ts_lua_main_ctx *main_ctx;
690 ts_lua_http_ctx *http_ctx;
691 ts_lua_cont_info *ci;
692
693 ts_lua_instance_conf *conf = (ts_lua_instance_conf *)TSContDataGet(contp);
694
695 main_ctx = static_cast<decltype(main_ctx)>(pthread_getspecific(lua_g_state_key));
696 if (main_ctx == nullptr) {
697 req_id = __sync_fetch_and_add(&ts_lua_g_http_next_id, 1);
698 Dbg(dbg_ctl, "[%s] req_id: %" PRId64, __FUNCTION__, req_id);
699 main_ctx = &ts_lua_g_main_ctx_array[req_id % conf->states];
700 pthread_setspecific(lua_g_state_key, main_ctx);
701 }
702
703 TSMutexLock(main_ctx->mutexp);
704
705 http_ctx = ts_lua_create_http_ctx(main_ctx, conf);
706 http_ctx->txnp = txnp;
707 http_ctx->rri = nullptr;
708 http_ctx->has_hook = 0;
709
710 if (!http_ctx->client_request_bufp) {
711 if (TSHttpTxnClientReqGet(txnp, &bufp, &hdr_loc) == TS_SUCCESS) {
712 http_ctx->client_request_bufp = bufp;
713 http_ctx->client_request_hdrp = hdr_loc;
714
715 if (TSHttpHdrUrlGet(bufp, hdr_loc, &url_loc) == TS_SUCCESS) {
716 http_ctx->client_request_url = url_loc;
717 }
718 }
719 }
720
721 if (!http_ctx->client_request_hdrp) {
722 ts_lua_destroy_http_ctx(http_ctx);
723 TSMutexUnlock(main_ctx->mutexp);
724
725 TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
726 return 0;
727 }
728
729 txn_contp = TSContCreate(ts_lua_http_cont_handler, nullptr);
730 TSContDataSet(txn_contp, http_ctx);
731

Callers

nothing calls this directly

Calls 15

TSContDataGetFunction · 0.85
TSMutexLockFunction · 0.85
ts_lua_create_http_ctxFunction · 0.85
TSHttpTxnClientReqGetFunction · 0.85
TSHttpHdrUrlGetFunction · 0.85
ts_lua_destroy_http_ctxFunction · 0.85
TSMutexUnlockFunction · 0.85
TSHttpTxnReenableFunction · 0.85
TSContCreateFunction · 0.85
TSContDataSetFunction · 0.85
TSContMutexGetFunction · 0.85
ts_lua_set_cont_infoFunction · 0.85

Tested by

no test coverage detected