| 943 | } |
| 944 | |
| 945 | Result HttpOutgoingMessage::addHeader(StringSpan headerName, StringSpan headerValue) |
| 946 | { |
| 947 | SC_TRY_MSG(not headersSent, "Headers already sent"); |
| 948 | SC_TRY_MSG(responseHeaders.writtenBytes() != 0, "startResponse or startRequest must be the first call"); |
| 949 | |
| 950 | if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Connection"))) |
| 951 | { |
| 952 | if (HttpStringIterator::equalsIgnoreCase(headerValue, StringSpan("keep-alive"))) |
| 953 | { |
| 954 | if (forceDisableKeepAlive) |
| 955 | { |
| 956 | return Result::Error("HttpOutgoingMessage::addHeader - keep-alive forcefully disabled"); |
| 957 | } |
| 958 | keepAlive = true; |
| 959 | } |
| 960 | else if (HttpStringIterator::equalsIgnoreCase(headerValue, StringSpan("close")) || |
| 961 | HttpStringIterator::equalsIgnoreCase(headerValue, StringSpan("Closed"))) |
| 962 | { |
| 963 | keepAlive = false; |
| 964 | } |
| 965 | connectionHeaderAdded = true; |
| 966 | } |
| 967 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Host"))) |
| 968 | { |
| 969 | hostHeaderAdded = true; |
| 970 | } |
| 971 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("User-Agent"))) |
| 972 | { |
| 973 | userAgentHeaderAdded = true; |
| 974 | } |
| 975 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Content-Length"))) |
| 976 | { |
| 977 | contentLengthAdded = true; |
| 978 | } |
| 979 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Content-Type"))) |
| 980 | { |
| 981 | contentTypeAdded = true; |
| 982 | } |
| 983 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Transfer-Encoding"))) |
| 984 | { |
| 985 | transferEncodingAdded = true; |
| 986 | } |
| 987 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Content-Encoding"))) |
| 988 | { |
| 989 | contentEncodingAdded = true; |
| 990 | } |
| 991 | else if (HttpStringIterator::equalsIgnoreCase(headerName, StringSpan("Accept-Encoding"))) |
| 992 | { |
| 993 | acceptEncodingAdded = true; |
| 994 | } |
| 995 | |
| 996 | SC_TRY(responseHeaders.appendHeader(headerName, headerValue, |
| 997 | "HttpOutgoingMessage::appendAscii - header space is finished")); |
| 998 | return Result(true); |
| 999 | } |
| 1000 | |
| 1001 | Result HttpOutgoingMessage::addContentLength(uint64_t value) |
| 1002 | { |