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

Function ts_lua_fill_one_result

plugins/lua/ts_lua_fetch.cc:447–515  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

445}
446
447static int
448ts_lua_fill_one_result(lua_State *L, ts_lua_fetch_info *fi)
449{
450 const char *name, *value;
451 int name_len, value_len;
452 char *dst;
453 int64_t ravail;
454 TSMBuffer bufp;
455 TSMLoc hdrp;
456 TSMLoc field_loc, next_field_loc;
457 TSHttpStatus status;
458
459 bufp = TSFetchRespHdrMBufGet(fi->fch);
460 hdrp = TSFetchRespHdrMLocGet(fi->fch);
461
462 // result table
463 lua_newtable(L);
464
465 // status code
466 status = TSHttpHdrStatusGet(bufp, hdrp);
467 lua_pushlstring(L, "status", sizeof("status") - 1);
468 lua_pushnumber(L, status);
469 lua_rawset(L, -3);
470
471 // header
472 lua_pushlstring(L, "header", sizeof("header") - 1);
473 lua_newtable(L);
474
475 field_loc = TSMimeHdrFieldGet(bufp, hdrp, 0);
476 while (field_loc) {
477 name = TSMimeHdrFieldNameGet(bufp, hdrp, field_loc, &name_len);
478 value = TSMimeHdrFieldValueStringGet(bufp, hdrp, field_loc, -1, &value_len);
479
480 lua_pushlstring(L, name, name_len);
481 lua_pushlstring(L, value, value_len);
482 lua_rawset(L, -3);
483
484 next_field_loc = TSMimeHdrFieldNext(bufp, hdrp, field_loc);
485 TSHandleMLocRelease(bufp, hdrp, field_loc);
486 field_loc = next_field_loc;
487 }
488 lua_rawset(L, -3);
489
490 // body
491 ravail = TSIOBufferReaderAvail(fi->reader);
492 if (ravail > 0) {
493 lua_pushlstring(L, "body", sizeof("body") - 1);
494
495 dst = (char *)TSmalloc(ravail);
496 IOBufferReaderCopy(fi->reader, dst, ravail);
497 lua_pushlstring(L, (char *)dst, ravail);
498
499 lua_rawset(L, -3);
500 TSfree(dst);
501 }
502
503 // truncated
504 lua_pushlstring(L, "truncated", sizeof("truncated") - 1);

Callers 1

Calls 12

TSFetchRespHdrMBufGetFunction · 0.85
TSFetchRespHdrMLocGetFunction · 0.85
TSHttpHdrStatusGetFunction · 0.85
TSMimeHdrFieldGetFunction · 0.85
TSMimeHdrFieldNameGetFunction · 0.85
TSMimeHdrFieldNextFunction · 0.85
TSHandleMLocReleaseFunction · 0.85
TSIOBufferReaderAvailFunction · 0.85
TSmallocFunction · 0.85
TSfreeFunction · 0.85
IOBufferReaderCopyFunction · 0.70

Tested by

no test coverage detected