| 1165 | static const char INVARIANT_FIELD_LINES_SIZE = sizeof(INVARIANT_FIELD_LINES) - 1; |
| 1166 | |
| 1167 | static bool |
| 1168 | writeStandardHeaderFields(InterceptData &int_data, int &n_bytes_written) |
| 1169 | { |
| 1170 | if (find(HEADER_ALLOWLIST.begin(), HEADER_ALLOWLIST.end(), TS_MIME_FIELD_VARY) == HEADER_ALLOWLIST.end()) { |
| 1171 | if (TSIOBufferWrite(int_data.output.buffer, INVARIANT_FIELD_LINES, INVARIANT_FIELD_LINES_SIZE) == TS_ERROR) { |
| 1172 | LOG_ERROR("Error while writing invariant fields"); |
| 1173 | return false; |
| 1174 | } |
| 1175 | n_bytes_written += INVARIANT_FIELD_LINES_SIZE; |
| 1176 | } |
| 1177 | |
| 1178 | if (find(HEADER_ALLOWLIST.begin(), HEADER_ALLOWLIST.end(), TS_MIME_FIELD_LAST_MODIFIED) == HEADER_ALLOWLIST.end()) { |
| 1179 | time_t time_now = static_cast<time_t>(TShrtime() / 1000000000); // it returns nanoseconds! |
| 1180 | char last_modified_line[128]; |
| 1181 | struct tm gmnow; |
| 1182 | int last_modified_line_size = |
| 1183 | strftime(last_modified_line, 128, "Last-Modified: %a, %d %b %Y %T GMT\r\n", gmtime_r(&time_now, &gmnow)); |
| 1184 | if (TSIOBufferWrite(int_data.output.buffer, last_modified_line, last_modified_line_size) == TS_ERROR) { |
| 1185 | LOG_ERROR("Error while writing last-modified fields"); |
| 1186 | return false; |
| 1187 | } |
| 1188 | n_bytes_written += last_modified_line_size; |
| 1189 | } |
| 1190 | |
| 1191 | return true; |
| 1192 | } |
| 1193 | |
| 1194 | static bool |
| 1195 | writeErrorResponse(InterceptData &int_data, int &n_bytes_written) |
no test coverage detected