From 44daf03024fbf7cbffa10349044786f6ab784821 Mon Sep 17 00:00:00 2001 From: "Tomas Chvatal (scarabeus)" Date: Wed, 22 Oct 2008 22:51:24 +0200 Subject: Revert "X" This reverts commit e12753d2ec9db83ec08bb9db63902a82fb245cdd. --- src/base/server.c | 451 +++++++++++++++++++++++++++--------------------------- 1 file changed, 223 insertions(+), 228 deletions(-) (limited to 'src/base/server.c') diff --git a/src/base/server.c b/src/base/server.c index 2142db2..836b9d2 100644 --- a/src/base/server.c +++ b/src/base/server.c @@ -51,353 +51,348 @@ static int maxClients; typedef struct proto_cmd_server_struct { - char *name; - int len; - int tux; - void (*fce_proto) (client_t *, char *msg); + char *name; + int len; + int tux; + void (*fce_proto)(client_t *,char *msg); } proto_cmd_server_t; -static proto_cmd_server_t proto_cmd_list[] = { - {.name = "hello",.len = 5,.tux = 0,.fce_proto = proto_recv_hello_server}, - {.name = "status",.len = 6,.tux = 0,.fce_proto = proto_recv_status_server}, +static proto_cmd_server_t proto_cmd_list[] = +{ + { .name = "hello", .len = 5, .tux = 0, .fce_proto = proto_recv_hello_server }, + { .name = "status", .len = 6, .tux = 0, .fce_proto = proto_recv_status_server }, #ifdef PUBLIC_SERVER - {.name = "list",.len = 4,.tux = 0,.fce_proto = - proto_recv_listscore_server}, + { .name = "list", .len = 4, .tux = 0, .fce_proto = proto_recv_listscore_server }, #endif - {.name = "event",.len = 5,.tux = 1,.fce_proto = proto_recv_event_server}, - {.name = "check",.len = 5,.tux = 1,.fce_proto = proto_recv_check_server}, - {.name = "module",.len = 6,.tux = 1,.fce_proto = proto_recv_module_server}, - {.name = "chat",.len = 4,.tux = 1,.fce_proto = proto_recv_chat_server}, - {.name = "ping",.len = 4,.tux = 1,.fce_proto = proto_recv_ping_server}, - {.name = "echo",.len = 4,.tux = 0,.fce_proto = proto_recv_echo_server}, - {.name = "end",.len = 3,.tux = 1,.fce_proto = proto_recv_end_server}, - {.name = "",.len = 0,.tux = 0,.fce_proto = NULL}, + { .name = "event", .len = 5, .tux = 1, .fce_proto = proto_recv_event_server }, + { .name = "check", .len = 5, .tux = 1, .fce_proto = proto_recv_check_server }, + { .name = "module", .len = 6, .tux = 1, .fce_proto = proto_recv_module_server }, + { .name = "chat", .len = 4, .tux = 1, .fce_proto = proto_recv_chat_server }, + { .name = "ping", .len = 4, .tux = 1, .fce_proto = proto_recv_ping_server }, + { .name = "echo", .len = 4, .tux = 0, .fce_proto = proto_recv_echo_server }, + { .name = "end", .len = 3, .tux = 1, .fce_proto = proto_recv_end_server }, + { .name = "", .len = 0, .tux = 0, .fce_proto = NULL }, }; -static proto_cmd_server_t * -findCmdProto(client_t * client, char *msg) +static proto_cmd_server_t* findCmdProto(client_t *client, char *msg) { - int len; - int i; - - len = strlen(msg); + int len; + int i; - for (i = 0; proto_cmd_list[i].len != 0; i++) { - proto_cmd_server_t *thisCmd; + len = strlen(msg); - thisCmd = &proto_cmd_list[i]; + for( i = 0 ; proto_cmd_list[i].len != 0 ; i++ ) + { + proto_cmd_server_t *thisCmd; + + thisCmd = &proto_cmd_list[i]; - if (len >= thisCmd->len - && strncmp(msg, thisCmd->name, thisCmd->len) == 0) { - if (thisCmd->tux && client->tux == NULL) { - return NULL; - } + if( len >= thisCmd->len && strncmp(msg, thisCmd->name, thisCmd->len) == 0 ) + { + if( thisCmd->tux && client->tux == NULL ) + { + return NULL; + } - return thisCmd; - } - } + return thisCmd; + } + } - return NULL; + return NULL; } -static void -startUpdateServer() +static void startUpdateServer() { - timeUpdate = time(NULL); + timeUpdate = time(NULL); } -time_t -getUpdateServer() +time_t getUpdateServer() { - return time(NULL) - timeUpdate; + return time(NULL) - timeUpdate; } -client_t * -newAnyClient() +client_t* newAnyClient() { - client_t *new; + client_t *new; - new = malloc(sizeof(client_t)); - memset(new, 0, sizeof(client_t)); + new = malloc( sizeof(client_t) ); + memset(new, 0, sizeof(client_t)); - new->status = NET_STATUS_OK; - new->listRecvMsg = newList(); - new->listSendMsg = newCheckFront(); - new->listSeesShot = newList(); - new->protect = newProtect(); + new->status = NET_STATUS_OK; + new->listRecvMsg = newList(); + new->listSendMsg = newCheckFront(); + new->listSeesShot = newList(); + new->protect = newProtect(); - return new; + return new; } -void -destroyAnyClient(client_t * p) +void destroyAnyClient(client_t *p) { - assert(p != NULL); + assert( p != NULL ); - //eventMsgInCheckFront(p); - destroyListItem(p->listRecvMsg, free); - destroyListItem(p->listSeesShot, free); - destroyCheckFront(p->listSendMsg); + //eventMsgInCheckFront(p); + destroyListItem(p->listRecvMsg, free); + destroyListItem(p->listSeesShot, free); + destroyCheckFront(p->listSendMsg); - destroyProtect(p->protect); + destroyProtect(p->protect); - if (p->tux != NULL) { + if( p->tux != NULL ) + { #ifdef PUBLIC_SERVER - addPlayerInHighScore(p->tux->name, p->tux->score); + addPlayerInHighScore(p->tux->name, p->tux->score); #endif - delObjectFromSpaceWithObject(getCurrentArena()->spaceTux, p->tux, - destroyTux); - } + delObjectFromSpaceWithObject(getCurrentArena()->spaceTux, p->tux, destroyTux); + } - free(p); + free(p); } -static void -eventDelClientFromListClient(client_t * client) +static void eventDelClientFromListClient(client_t *client) { - int offset; + int offset; - offset = searchListItem(listClient, client); + offset = searchListItem(listClient, client); - assert(offset != -1); + assert( offset != -1 ); - delListItem(listClient, offset, destroyUdpClient); + delListItem(listClient, offset, destroyUdpClient); } -static void -delZombieCLient(void *p_nothink) +static void delZombieCLient(void *p_nothink) { - client_t *thisClient; - my_time_t currentTime; - int i; - - currentTime = getMyTime(); - - for (i = 0; i < listClient->count; i++) { - thisClient = (client_t *) listClient->list[i]; - - if (isDown(thisClient->protect) == TRUE) { - proto_send_end_server(PROTO_SEND_ONE, thisClient); - eventMsgInCheckFront(thisClient); - thisClient->status = NET_STATUS_ZOMBIE; - } - - if (thisClient->status == NET_STATUS_ZOMBIE) { - if (thisClient->tux != NULL) { - proto_send_del_server(PROTO_SEND_ALL, NULL, thisClient->tux->id); - } - - eventDelClientFromListClient(thisClient); - i--; - } - } + client_t *thisClient; + my_time_t currentTime; + int i; + + currentTime = getMyTime(); + + for( i = 0 ; i < listClient->count; i++) + { + thisClient = (client_t *) listClient->list[i]; + + if( isDown(thisClient->protect) == TRUE ) + { + proto_send_end_server(PROTO_SEND_ONE, thisClient); + eventMsgInCheckFront(thisClient); + thisClient->status = NET_STATUS_ZOMBIE; + } + + if( thisClient->status == NET_STATUS_ZOMBIE ) + { + if( thisClient->tux != NULL ) + { + proto_send_del_server(PROTO_SEND_ALL, NULL, thisClient->tux->id); + } + + eventDelClientFromListClient(thisClient); + i--; + } + } } -static void -eventPeriodicSyncClient(void *p_nothink) +static void eventPeriodicSyncClient(void *p_nothink) { - client_t *thisClientSend; - tux_t *thisTux; - int i; + client_t *thisClientSend; + tux_t *thisTux; + int i; #ifndef PUBLIC_SERVER - proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, NULL, - getControlTux(TUX_CONTROL_KEYBOARD_RIGHT)); + proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, NULL, getControlTux(TUX_CONTROL_KEYBOARD_RIGHT)); #endif - for (i = 0; i < listClient->count; i++) { - thisClientSend = (client_t *) listClient->list[i]; - thisTux = thisClientSend->tux; + for( i = 0 ; i < listClient->count; i++ ) + { + thisClientSend = (client_t *) listClient->list[i]; + thisTux = thisClientSend->tux; - if (thisTux == NULL) { - continue; - } + if( thisTux == NULL ) + { + continue; + } - //proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, thisClientSend, thisTux); - proto_send_newtux_server(PROTO_SEND_BUT, thisClientSend, thisTux); - } + //proto_send_newtux_server(PROTO_SEND_ALL_SEES_TUX, thisClientSend, thisTux); + proto_send_newtux_server(PROTO_SEND_BUT, thisClientSend, thisTux); + } } -static void -eventSendPingClients(void *p_nothink) +static void eventSendPingClients(void *p_nothink) { - proto_send_ping_server(PROTO_SEND_ALL, NULL); + proto_send_ping_server(PROTO_SEND_ALL, NULL); } -void -setServerTimer() +void setServerTimer() { - if (listServerTimer != NULL) { - destroyTimer(listServerTimer); - } - - restartTimer(); - listServerTimer = newTimer(); - - addTaskToTimer(listServerTimer, TIMER_PERIODIC, delZombieCLient, NULL, - SERVER_TIMEOUT); - addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventPeriodicSyncClient, - NULL, SERVER_TIME_SYNC); - addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventSendPingClients, NULL, - SERVER_TIME_PING); + if( listServerTimer != NULL ) + { + destroyTimer(listServerTimer); + } + + restartTimer(); + listServerTimer = newTimer(); + + addTaskToTimer(listServerTimer, TIMER_PERIODIC, delZombieCLient, NULL, SERVER_TIMEOUT); + addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventPeriodicSyncClient, NULL, SERVER_TIME_SYNC); + addTaskToTimer(listServerTimer, TIMER_PERIODIC, eventSendPingClients, NULL, SERVER_TIME_PING); } -int -initServer(char *ip4, int port4, char *ip6, int port6) +int initServer(char *ip4, int port4, char *ip6, int port6) { - int ret; + int ret; - startUpdateServer(); - listServerTimer = NULL; + startUpdateServer(); + listServerTimer = NULL; - listClient = newList(); + listClient = newList(); - setServerMaxClients(SERVER_MAX_CLIENTS); - setServerTimer(); + setServerMaxClients(SERVER_MAX_CLIENTS); + setServerTimer(); - ret = initUdpServer(ip4, port4, ip6, port6); + ret = initUdpServer(ip4, port4, ip6, port6); - if (ret == 0) { - return -1; - } + if( ret == 0 ) + { + return -1; + } - return ret; + return ret; } -list_t * -getListServerClient() +list_t* getListServerClient() { - return listClient; + return listClient; } -int -getServerMaxClients() +int getServerMaxClients() { - return maxClients; + return maxClients; } -void -setServerMaxClients(int n) +void setServerMaxClients(int n) { - maxClients = n; + maxClients = n; } -void -sendClient(client_t * p, char *msg) +void sendClient(client_t *p, char *msg) { - assert(p != NULL); - assert(msg != NULL); + assert( p != NULL ); + assert( msg != NULL ); - if (p->status != NET_STATUS_ZOMBIE) { - int ret = -1; // no Warnnings + if( p->status != NET_STATUS_ZOMBIE ) + { + int ret = -1; // no Warnnings #ifndef PUBLIC_SERVER - if (isParamFlag("--send")) { - printf(_("Sending: \"%s\""), msg); - } + if( isParamFlag("--send") ) + { + printf(_("Sending: \"%s\""), msg); + } #endif - ret = writeUdpSocket(p->socket_udp, p->socket_udp, msg, strlen(msg)); + ret = writeUdpSocket(p->socket_udp, p->socket_udp, msg, strlen(msg)); - if (ret <= 0) { - p->status = NET_STATUS_ZOMBIE; - } - } + if( ret <= 0 ) + { + p->status = NET_STATUS_ZOMBIE; + } + } } -static void -eventClientWorkRecvList(client_t * client) +static void eventClientWorkRecvList(client_t *client) { - proto_cmd_server_t *protoCmd; - char *line; - int i; - - assert(client != NULL); + proto_cmd_server_t* protoCmd; + char *line; + int i; - /* obsluha udalosti od clientov */ + assert( client != NULL ); - for (i = 0; i < client->listRecvMsg->count; i++) { - line = (char *) client->listRecvMsg->list[i]; - protoCmd = findCmdProto(client, line); + /* obsluha udalosti od clientov */ + + for( i = 0 ; i < client->listRecvMsg->count ; i++ ) + { + line = (char *)client->listRecvMsg->list[i]; + protoCmd = findCmdProto(client, line); #ifndef PUBLIC_SERVER - if (isParamFlag("--recv")) { - printf(_("Recieved: \"%s\""), line); - } + if( isParamFlag("--recv") ) + { + printf(_("Recieved: \"%s\""), line); + } #endif - if (protoCmd != NULL) { - protoCmd->fce_proto(client, line); - rereshLastPing(client->protect); - } - else { - proto_send_error_server(PROTO_SEND_ONE, client, - PROTO_ERROR_CODE_BAD_COMMAND); - } - } - - destroyListItem(client->listRecvMsg, free); - client->listRecvMsg = newList(); + if( protoCmd != NULL ) + { + protoCmd->fce_proto(client, line); + rereshLastPing(client->protect); + } + else + { + proto_send_error_server(PROTO_SEND_ONE, client, PROTO_ERROR_CODE_BAD_COMMAND); + } + } + + destroyListItem(client->listRecvMsg, free); + client->listRecvMsg = newList(); } -static void -porcesListClients() +static void porcesListClients() { - int i; - client_t *thisClient; + int i; + client_t *thisClient; - for (i = 0; i < listClient->count; i++) { - thisClient = (client_t *) listClient->list[i]; + for( i = 0 ; i < listClient->count; i++) + { + thisClient = (client_t *) listClient->list[i]; - eventClientWorkRecvList(thisClient); - eventMsgInCheckFront(thisClient); - } + eventClientWorkRecvList(thisClient); + eventMsgInCheckFront(thisClient); + } } -void -eventServer() +void eventServer() { #ifndef PUBLIC_SERVER - int count; + int count; - do { - restartSelect(); - setServerUdpSelect(); - actionSelect(); - count = selectServerUdpSocket(); - } while (count > 0); + do{ + restartSelect(); + setServerUdpSelect(); + actionSelect(); + count = selectServerUdpSocket(); + }while( count > 0 ); #endif #ifdef PUBLIC_SERVER - int ret; + int ret; - restartSelect(); + restartSelect(); - setServerUdpSelect(); + setServerUdpSelect(); - ret = actionSelect(); + ret = actionSelect(); - if (ret > 0) { - selectServerUdpSocket(); - } + if( ret > 0 ) + { + selectServerUdpSocket(); + } #endif - porcesListClients(); - eventTimer(listServerTimer); + porcesListClients(); + eventTimer(listServerTimer); } -void -quitServer() +void quitServer() { - proto_send_end_server(PROTO_SEND_ALL, NULL); + proto_send_end_server(PROTO_SEND_ALL, NULL); - assert(listClient != NULL); + assert( listClient != NULL ); - destroyListItem(listClient, destroyUdpClient); + destroyListItem(listClient, destroyUdpClient); - destroyTimer(listServerTimer); + destroyTimer(listServerTimer); - quitUdpServer(); + quitUdpServer(); } -- cgit v1.2.3