summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-21 14:04:35 +0300
committermrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-21 14:04:35 +0300
commit65888e46aa17a21128a4dbf25357c4e843a7f027 (patch)
tree9748f55b10c8d4f75a22b0441b98286ecf60573a
parent42557513bc4740b65175b6ca46307ce023c2a628 (diff)
fix(lib): fix runtime errors
-rw-r--r--lib/controller.c17
-rw-r--r--lib/worker.c12
2 files changed, 13 insertions, 16 deletions
diff --git a/lib/controller.c b/lib/controller.c
index ce850c5..b28f0dd 100644
--- a/lib/controller.c
+++ b/lib/controller.c
@@ -116,11 +116,12 @@ void* controller_conn_thread(void* args) {
}
memcpy(buf, &task->id, sizeof(task->id));
- memcpy(buf + sizeof(task->id), task->task, task->task_size);
+ memcpy(buf + 16, task->task, task->task_size);
- conn_write(conn->conn, buf, sizeof(task->id) + task->task_size);
+ conn_write(conn->conn, buf, 16 + task->task_size);
+ free(data);
} else if (data[0] == REQUEST_TYPE_PUT_RESULT) {
- int id = *((int*) (data + 1));
+ int id = *((int*) (data + 4));
if (pthread_mutex_lock(&cntr->mutex) != 0) {
fprintf(stderr, "[controller_thread] Unable to call pthread_mutex_lock\n");
exit(EXIT_FAILURE);
@@ -131,9 +132,8 @@ void* controller_conn_thread(void* args) {
if (cntr->tasks[i].id == id) {
task = &cntr->tasks[i];
task->status = TASK_STATUS_FINISHED;
- task->response = data + 5;
- task->response_size = sz - 5;
- printf("finished\n");
+ task->response = data + 16;
+ task->response_size = sz - 16;
break;
}
}
@@ -152,8 +152,6 @@ void* controller_conn_thread(void* args) {
} else {
conn_close(conn->conn);
}
-
- free(data);
}
conn_close(conn->conn);
@@ -263,11 +261,10 @@ int controller_yield_task(const char* data, size_t size) {
controller_task_t* task = &cntr->tasks[cntr->tasks_len];
- task->id = cntr->tasks_len + 1;
+ task->id = ++cntr->tasks_len;
task->task = data;
task->task_size = size;
task->status = TASK_STATUS_QUEUED;
- cntr->tasks_len++;
if (pthread_mutex_unlock(&cntr->mutex) != 0) {
fprintf(stderr, "[yield_task] Unable to call pthread_mutex_unlock\n");
diff --git a/lib/worker.c b/lib/worker.c
index fa399f0..9891310 100644
--- a/lib/worker.c
+++ b/lib/worker.c
@@ -67,18 +67,18 @@ void* worker_proc_thread(void* args) {
char* resp;
size_t resp_size;
- wrk->func(task + 4, size - 4, &resp, &resp_size);
- memcpy(worker_buf + 1, task, 4);
- free(task);
-
+ wrk->func(task + 16, size - 16, &resp, &resp_size);
if (pthread_mutex_lock(&wrk->mutex) != 0) {
fprintf(stderr, "[proc_thread] Unable to call pthread_mutex_lock\n");
exit(EXIT_FAILURE);
}
+ memcpy(worker_buf + 4, task, 4);
+ free(task);
+
worker_buf[0] = REQUEST_TYPE_PUT_RESULT;
- memcpy(worker_buf + 5, resp, resp_size);
- conn_write(wrk->conn, worker_buf, resp_size + 5);
+ memcpy(worker_buf + 16, resp, resp_size);
+ conn_write(wrk->conn, worker_buf, resp_size + 16);
free(resp);
free(conn_read(wrk->conn, &size));