summaryrefslogtreecommitdiff
path: root/src/net_server.c
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2011-01-23 23:33:38 +0100
committerReiner Herrmann <reiner@reiner-h.de>2011-01-23 23:33:38 +0100
commit322ff55a41374e39731aa53dcf6028b09c7c39c9 (patch)
treed4865acc1c0059c395a448458d0989bb9f8481c3 /src/net_server.c
parent53a80d4dc85faea83f1a59039090a3a35424208e (diff)
adapted client_recv_hello to data store
Diffstat (limited to 'src/net_server.c')
-rw-r--r--src/net_server.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/net_server.c b/src/net_server.c
index 7127428..327a695 100644
--- a/src/net_server.c
+++ b/src/net_server.c
@@ -108,23 +108,21 @@ void server_get_players(int serversock, socket_list_t* client_socks, const uint8
* @param[in] sock Socket to use
* @return Username of client
*/
-char* server_recv_hello(const uint8_t* payload, const uint8_t payload_len)
+bool server_recv_hello(const uint8_t* payload, const uint8_t payload_len)
{
- assert(payload != NULL);
+ assert(payload != NULL && payload_len < MAX_PLAYER_NAME_LENGTH && payload_len > 0);
- char* name;
+ data_store* ds = datamodel();
- name = malloc(payload_len+1);
- if(name == NULL)
+ for(int i=0; i<ds->players.count; i++)
{
- printf("sender_recv_hello: Out of memory\n");
- exit(EXIT_FAILURE);
+ if(strlen(ds->players.players[i].player_name) > 0) // search for first empty (not yet assigned) slot
+ continue;
+ memcpy(ds->players.players[i].player_name, payload, payload_len);
+ ds->players.players[i].player_name[payload_len] = '\0';
}
- memcpy(name, payload, payload_len);
- name[payload_len] = '\0';
-
- return name;
+ return true;
}
card* server_recv_selected_card(const uint8_t* payload, const uint8_t payload_len)