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

Method change_response_header

src/proxy/Transform.cc:1070–1104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1068 */
1069
1070void
1071RangeTransform::change_response_header()
1072{
1073 MIMEField *field;
1074 char *reason_phrase;
1075 HTTPStatus status_code;
1076
1077 ink_release_assert(m_transform_resp);
1078
1079 status_code = HTTP_STATUS_PARTIAL_CONTENT;
1080 m_transform_resp->status_set(status_code);
1081 reason_phrase = const_cast<char *>(http_hdr_reason_lookup(status_code));
1082 m_transform_resp->reason_set(reason_phrase, strlen(reason_phrase));
1083
1084 if (m_num_range_fields > 1) {
1085 // set the right Content-Type for multiple entry Range
1086 field = m_transform_resp->field_find(MIME_FIELD_CONTENT_TYPE, MIME_LEN_CONTENT_TYPE);
1087
1088 if (field != nullptr) {
1089 m_transform_resp->field_delete(MIME_FIELD_CONTENT_TYPE, MIME_LEN_CONTENT_TYPE);
1090 }
1091
1092 field = m_transform_resp->field_create(MIME_FIELD_CONTENT_TYPE, MIME_LEN_CONTENT_TYPE);
1093 field->value_append(m_transform_resp->m_heap, m_transform_resp->m_mime, range_type, sizeof(range_type) - 1);
1094
1095 m_transform_resp->field_attach(field);
1096 } else {
1097 char numbers[RANGE_NUMBERS_LENGTH];
1098 m_transform_resp->field_delete(MIME_FIELD_CONTENT_RANGE, MIME_LEN_CONTENT_RANGE);
1099 field = m_transform_resp->field_create(MIME_FIELD_CONTENT_RANGE, MIME_LEN_CONTENT_RANGE);
1100 snprintf(numbers, sizeof(numbers), "bytes %" PRId64 "-%" PRId64 "/%" PRId64, m_ranges[0]._start, m_ranges[0]._end, m_output_cl);
1101 field->value_set(m_transform_resp->m_heap, m_transform_resp->m_mime, numbers, strlen(numbers));
1102 m_transform_resp->field_attach(field);
1103 }
1104}
1105
1106#undef RANGE_NUMBERS_LENGTH

Callers

nothing calls this directly

Calls 9

http_hdr_reason_lookupFunction · 0.85
field_findMethod · 0.80
field_deleteMethod · 0.80
value_appendMethod · 0.80
field_attachMethod · 0.80
status_setMethod · 0.45
reason_setMethod · 0.45
field_createMethod · 0.45
value_setMethod · 0.45

Tested by

no test coverage detected