}
// We've changed states, so fall through.
- assert(client->state == Client::SENDING_ERROR ||
+ assert(client->state == Client::SENDING_SHORT_RESPONSE ||
client->state == Client::SENDING_HEADER);
}
- case Client::SENDING_ERROR:
+ case Client::SENDING_SHORT_RESPONSE:
case Client::SENDING_HEADER: {
-sending_header_or_error_again:
+sending_header_or_short_response_again:
int ret;
do {
ret = write(client->sock,
- client->header_or_error.data() + client->header_or_error_bytes_sent,
- client->header_or_error.size() - client->header_or_error_bytes_sent);
+ client->header_or_short_response.data() + client->header_or_short_response_bytes_sent,
+ client->header_or_short_response.size() - client->header_or_short_response_bytes_sent);
} while (ret == -1 && errno == EINTR);
if (ret == -1 && errno == EAGAIN) {
return;
}
- client->header_or_error_bytes_sent += ret;
- assert(client->header_or_error_bytes_sent <= client->header_or_error.size());
+ client->header_or_short_response_bytes_sent += ret;
+ assert(client->header_or_short_response_bytes_sent <= client->header_or_short_response.size());
- if (client->header_or_error_bytes_sent < client->header_or_error.size()) {
+ if (client->header_or_short_response_bytes_sent < client->header_or_short_response.size()) {
// We haven't sent all yet. Fine; go another round.
- goto sending_header_or_error_again;
+ goto sending_header_or_short_response_again;
}
// We're done sending the header or error! Clear it to release some memory.
- client->header_or_error.clear();
+ client->header_or_short_response.clear();
- if (client->state == Client::SENDING_ERROR) {
+ if (client->state == Client::SENDING_SHORT_RESPONSE) {
// We're done sending the error, so now close.
// This is postcondition #1.
close_client(client);
{
Stream *stream = client->stream;
if (stream->encoding == Stream::STREAM_ENCODING_RAW) {
- client->header_or_error = stream->http_header +
+ client->header_or_short_response = stream->http_header +
"\r\n" +
stream->stream_header;
} else if (stream->encoding == Stream::STREAM_ENCODING_METACUBE) {
- client->header_or_error = stream->http_header +
+ client->header_or_short_response = stream->http_header +
"Content-encoding: metacube\r\n" +
"\r\n";
if (!stream->stream_header.empty()) {
hdr.size = htonl(stream->stream_header.size());
hdr.flags = htons(METACUBE_FLAGS_HEADER);
hdr.csum = htons(metacube2_compute_crc(&hdr));
- client->header_or_error.append(
+ client->header_or_short_response.append(
string(reinterpret_cast<char *>(&hdr), sizeof(hdr)));
}
- client->header_or_error.append(stream->stream_header);
+ client->header_or_short_response.append(stream->stream_header);
} else {
assert(false);
}
char error[256];
snprintf(error, 256, "HTTP/1.0 %d Error\r\nContent-type: text/plain\r\n\r\nSomething went wrong. Sorry.\r\n",
error_code);
- client->header_or_error = error;
+ client->header_or_short_response = error;
// Switch states.
- client->state = Client::SENDING_ERROR;
+ client->state = Client::SENDING_SHORT_RESPONSE;
epoll_event ev;
ev.events = EPOLLOUT | EPOLLET | EPOLLRDHUP;