commit - 7d390ed8992106bf3574f65f7fe6ca195c208d07
commit + f3fbde3134fce52d2d09c4ef1de3ba0372bbb171
blob - e2ed5cdc821597ddd5b60cc8982aa42cbd19135a
blob + 4c97b61a48c1358cebde4b6afd7a670cbb634740
--- include/procedures.h
+++ include/procedures.h
int reservePlayerData (int client_fd, uint8_t *uuid, char* name);
int getPlayerData (int client_fd, PlayerData **output);
void handlePlayerDisconnect (int client_fd);
+void disconnectClient (int *client_fd, int cause);
int givePlayerItem (PlayerData *player, uint16_t item, uint8_t count);
void spawnPlayer (PlayerData *player);
blob - b4e9accd02c29f4a684a0a82f6f087ee5cc71dad
blob + d3f9bba7c4011521fbfc70eb86e46f9789e75421
--- src/main.c
+++ src/main.c
}
-void disconnectClient (int *client_fd, int cause) {
- if (*client_fd == -1) return;
- client_count --;
- setClientState(*client_fd, STATE_NONE);
- handlePlayerDisconnect(*client_fd);
- close(*client_fd);
- *client_fd = -1;
- printf("Disconnected client %d, cause: %d, errno: %d\n\n", *client_fd, cause, errno);
-}
-
int main () {
// Hash the seeds to ensure they're random enough
esp_wifi_set_mode(WIFI_MODE_STA);
esp_wifi_set_config(WIFI_IF_STA, &wifi_config);
+ esp_wifi_set_ps(WIFI_PS_NONE);
esp_wifi_start();
}
blob - eee26a4879930f6a28e98d11aab4a2d9b8938fd0
blob + e341cd4362eb8db374d2b528086c6dee93389072
--- src/procedures.c
+++ src/procedures.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <errno.h>
#include "globals.h"
#include "tools.h"
}
}
+void disconnectClient (int *client_fd, int cause) {
+ if (*client_fd == -1) return;
+ client_count --;
+ setClientState(*client_fd, STATE_NONE);
+ handlePlayerDisconnect(*client_fd);
+ close(*client_fd);
+ *client_fd = -1;
+ printf("Disconnected client %d, cause: %d, errno: %d\n\n", *client_fd, cause, errno);
+}
+
uint8_t serverSlotToClientSlot (int window_id, uint8_t slot) {
if (window_id == 0) { // player inventory
blob - 33d35baf4b86052e1919bf7e25e1598d66172036
blob + 24a023a828bdd5f9aa5ab7ce054a9e650b13ed0f
--- src/tools.c
+++ src/tools.c
#include "globals.h"
#include "varnum.h"
+#include "procedures.h"
#include "tools.h"
static uint64_t htonll (uint64_t value) {
if (r < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// handle network timeout
- if (get_program_time() - last_update_time > NETWORK_TIMEOUT_TIME) return -1;
+ if (get_program_time() - last_update_time > NETWORK_TIMEOUT_TIME) {
+ disconnectClient(&client_fd, -1);
+ return -1;
+ }
task_yield();
continue;
} else {
// not yet ready to transmit, try again
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK) {
// handle network timeout
- if (get_program_time() - last_update_time > NETWORK_TIMEOUT_TIME) return -1;
+ if (get_program_time() - last_update_time > NETWORK_TIMEOUT_TIME) {
+ disconnectClient(&client_fd, -2);
+ return -1;
+ }
task_yield();
continue;
}