diff options
Diffstat (limited to 'src/tree')
| -rw-r--r-- | src/tree/tree.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/tree/tree.c b/src/tree/tree.c index 8dcc501..1be4891 100644 --- a/src/tree/tree.c +++ b/src/tree/tree.c @@ -5,7 +5,7 @@ #include "tree.h" #include "common.h" -#define USER_AGENT al_str_c("Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0") +#define USER_AGENT al_str_c("Mozilla/5.0 (Windows NT 10.0; rv:122.0) Gecko/20100101 Firefox/122.0") static void http_callback(void *userdata, struct aki_http_request *response, bool success) { @@ -64,21 +64,16 @@ static struct tree_user *get_user_by_connection(struct tree_server *tree, struct al_array_foreach(tree->users, i, user) { struct tree_client *client; al_array_foreach(user->clients, j, client) { - if (client->conn == conn) { - return user; - } + if (client->conn == conn) return user; } struct tree_list *list; al_array_foreach(user->lists, j, list) { struct tree_sink *sink; al_array_foreach(list->sinks, k, sink) { - if (sink->conn == conn) { - return user; - } + if (sink->conn == conn) return user; } } } - return NULL; } @@ -173,6 +168,11 @@ out: static bool get_page_command_callback(void *userdata, struct aki_rpc_connection *conn, struct aki_packet *packet, struct aki_packet *rpacket) { + s32 id = aki_packet_read_s32(packet); + + // Always reciprocate the requested id, even if it turns out to be invalid. + aki_packet_write_s32(rpacket, id); + struct tree_server *tree = (struct tree_server *)userdata; struct tree_user *user = get_user_by_connection(tree, conn); if (!user) { @@ -180,7 +180,6 @@ static bool get_page_command_callback(void *userdata, struct aki_rpc_connection goto out; } - s32 id = aki_packet_read_s32(packet); u32 page_request = aki_packet_read_u32(packet); struct sho_search *search = sho_client_get_search(&user->search, id); @@ -195,7 +194,6 @@ static bool get_page_command_callback(void *userdata, struct aki_rpc_connection } aki_packet_write_s32(rpacket, 0); - aki_packet_write_s32(rpacket, search->id); aki_packet_write_u32(rpacket, page_request); struct sho_result_page *page = &al_array_at(search->pages, page_request); aki_packet_write_u32(rpacket, page->posts.size); @@ -228,7 +226,6 @@ static bool add_command_callback(void *userdata, struct aki_rpc_connection *conn struct tree_list *list = al_array_at(user->lists, 0); tree_list_add(list, &unique_id, index); - tree_list_skip(list, 1); out: aki_packet_free(packet); @@ -314,7 +311,6 @@ static void connection_closed_callback(void *userdata, struct aki_rpc_connection static struct aki_rpc_command commands[] = { { .op = TREE_CMD_IDENTIFY, .callback = identify_command_callback, .userdata = NULL }, - // Client commands. { .op = TREE_CMD_CREATE_SEARCH, .callback = create_search_command_callback, .userdata = NULL }, { .op = TREE_CMD_GET_PAGE, .callback = get_page_command_callback, .userdata = NULL }, { .op = TREE_CMD_ADD, .callback = add_command_callback, .userdata = NULL }, |