respondd: change order of definitions to avoid implicit forward definitions
This commit is contained in:
parent
8b86f150b9
commit
4915377266
|
@ -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.
|
// Wait for an incomming request and schedule it.
|
||||||
//
|
//
|
||||||
// 1a. If the schedule is empty, we wait infinite time.
|
// 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) {
|
int main(int argc, char **argv) {
|
||||||
const int one = 1;
|
const int one = 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue