summaryrefslogtreecommitdiffstats
path: root/lib/controller.c
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 /lib/controller.c
parent42557513bc4740b65175b6ca46307ce023c2a628 (diff)
fix(lib): fix runtime errors
Diffstat (limited to 'lib/controller.c')
-rw-r--r--lib/controller.c17
1 files changed, 7 insertions, 10 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");