respondd: change order of definitions to avoid implicit forward definitions

This commit is contained in:
lemoer 2016-09-10 04:07:32 +02:00
parent 8b86f150b9
commit 4915377266
1 changed files with 46 additions and 46 deletions

View File

@ -384,6 +384,52 @@ static struct json_object * handle_request(char *request, bool *compress) {
}
}
void send_response(int sock, struct json_object *result, bool compress,
struct sockaddr_in6 *addr) {
const char *output = NULL;
size_t output_bytes;
const char *str = json_object_to_json_string_ext(result, JSON_C_TO_STRING_PLAIN);
if (compress) {
size_t str_bytes = strlen(str);
mz_ulong compressed_bytes = mz_compressBound(str_bytes);
unsigned char *compressed = alloca(compressed_bytes);
if (!mz_compress(compressed, &compressed_bytes, (const unsigned char *)str, str_bytes)) {
output = (const char*)compressed;
output_bytes = compressed_bytes;
}
}
else {
output = str;
output_bytes = strlen(str);
}
if (output) {
if (sendto(sock, output, output_bytes, 0, addr, sizeof(struct sockaddr_in6)) < 0)
perror("sendto failed");
}
json_object_put(result);
}
void serve_request(struct request_task *task, int sock) {
bool compress;
struct json_object *result = handle_request(task->request, &compress);
if (!result)
return;
send_response(
sock,
result,
compress,
&task->client_addr
);
}
// Wait for an incomming request and schedule it.
//
// 1a. If the schedule is empty, we wait infinite time.
@ -475,52 +521,6 @@ static void accept_request(struct request_schedule *schedule, int sock,
}
}
void send_response(int sock, struct json_object *result, bool compress,
struct sockaddr_in6 *addr) {
const char *output = NULL;
size_t output_bytes;
const char *str = json_object_to_json_string_ext(result, JSON_C_TO_STRING_PLAIN);
if (compress) {
size_t str_bytes = strlen(str);
mz_ulong compressed_bytes = mz_compressBound(str_bytes);
unsigned char *compressed = alloca(compressed_bytes);
if (!mz_compress(compressed, &compressed_bytes, (const unsigned char *)str, str_bytes)) {
output = (const char*)compressed;
output_bytes = compressed_bytes;
}
}
else {
output = str;
output_bytes = strlen(str);
}
if (output) {
if (sendto(sock, output, output_bytes, 0, addr, sizeof(struct sockaddr_in6)) < 0)
perror("sendto failed");
}
json_object_put(result);
}
void serve_request(struct request_task *task, int sock) {
bool compress;
struct json_object *result = handle_request(task->request, &compress);
if (!result)
return;
send_response(
sock,
result,
compress,
&task->client_addr
);
}
int main(int argc, char **argv) {
const int one = 1;