diff -r a446eafcddeb -r e704706008d4 project_files/frontlib/net/netconn.c --- a/project_files/frontlib/net/netconn.c Thu Jul 05 22:22:48 2012 +0200 +++ b/project_files/frontlib/net/netconn.c Tue Jul 10 19:33:57 2012 +0200 @@ -34,9 +34,9 @@ #include #include -flib_netconn *flib_netconn_create(const char *playerName, flib_cfg_meta *metacfg, const char *dataDirPath, const char *host, uint16_t port) { +flib_netconn *flib_netconn_create(const char *playerName, flib_metascheme *metacfg, const char *dataDirPath, const char *host, int port) { flib_netconn *result = NULL; - if(!log_badargs_if3(playerName==NULL, metacfg==NULL, host==NULL)) { + if(!log_badargs_if5(playerName==NULL, metacfg==NULL, host==NULL, port<1, port>65535)) { flib_netconn *newConn = flib_calloc(1, sizeof(flib_netconn)); if(newConn) { newConn->netBase = flib_netbase_create(host, port); @@ -45,7 +45,7 @@ newConn->netconnState = NETCONN_STATE_CONNECTING; newConn->isAdmin = false; - newConn->metaCfg = flib_cfg_meta_retain(metacfg); + newConn->metaCfg = flib_metascheme_retain(metacfg); newConn->roomList.roomCount = 0; newConn->roomList.rooms = NULL; @@ -87,13 +87,13 @@ free(conn->playerName); free(conn->dataDirPath); - flib_cfg_meta_release(conn->metaCfg); + flib_metascheme_release(conn->metaCfg); flib_roomlist_clear(&conn->roomList); flib_map_release(conn->map); flib_teamlist_clear(&conn->pendingTeamlist); flib_teamlist_clear(&conn->teamlist); - flib_cfg_release(conn->scheme); + flib_scheme_release(conn->scheme); free(conn->script); flib_weaponset_release(conn->weaponset); @@ -123,7 +123,7 @@ conn->map = flib_map_create_named("", "NoSuchMap"); flib_teamlist_clear(&conn->pendingTeamlist); flib_teamlist_clear(&conn->teamlist); - flib_cfg_release(conn->scheme); + flib_scheme_release(conn->scheme); conn->scheme = NULL; free(conn->script); conn->script = NULL; @@ -159,10 +159,10 @@ } } -void netconn_setScheme(flib_netconn *conn, const flib_cfg *scheme) { - flib_cfg *copy = flib_cfg_copy(scheme); +void netconn_setScheme(flib_netconn *conn, const flib_scheme *scheme) { + flib_scheme *copy = flib_scheme_copy(scheme); if(copy) { - flib_cfg_release(conn->scheme); + flib_scheme_release(conn->scheme); conn->scheme = copy; } } @@ -182,7 +182,7 @@ if(tmpSetup) { for(int i=0; iteamlist->teamCount; i++) { flib_team_set_weaponset(tmpSetup->teamlist->teams[i], conn->weaponset); - flib_team_set_health(tmpSetup->teamlist->teams[i], flib_cfg_get_setting(conn->scheme, "health", 100)); + flib_team_set_health(tmpSetup->teamlist->teams[i], flib_scheme_get_setting(conn->scheme, "health", 100)); } if(tmpSetup->map->mapgen == MAPGEN_NAMED && tmpSetup->map->name) { flib_mapcfg mapcfg; @@ -332,19 +332,15 @@ flib_log_w("Net: Bad ADD_TEAM message"); } else { flib_team *team = flib_team_from_netmsg(netmsg->parts+1); - flib_team *teamcopy = flib_team_from_netmsg(netmsg->parts+1); - if(!team || !teamcopy) { + if(!team || flib_teamlist_insert(&conn->teamlist, team, conn->teamlist.teamCount)) { + flib_team_destroy(team); conn->netconnState = NETCONN_STATE_DISCONNECTED; conn->onDisconnectedCb(conn->onDisconnectedCtx, NETCONN_DISCONNECT_INTERNAL_ERROR, "Internal error"); exit = true; } else { team->remoteDriven = true; - teamcopy->remoteDriven = true; - flib_teamlist_insert(&conn->teamlist, teamcopy, conn->teamlist.teamCount); conn->onTeamAddCb(conn->onTeamAddCtx, team); } - flib_team_release(team); - flib_team_release(teamcopy); } } else if (!strcmp(cmd, "REMOVE_TEAM")) { if(netmsg->partCount != 2 || !flib_netconn_is_in_room_context(conn)) { @@ -467,14 +463,14 @@ } else { const char *subcmd = netmsg->parts[1]; if(!strcmp(subcmd, "SCHEME") && netmsg->partCount == conn->metaCfg->modCount + conn->metaCfg->settingCount + 3) { - flib_cfg *cfg = flib_netmsg_to_cfg(conn->metaCfg, netmsg->parts+2); + flib_scheme *cfg = flib_netmsg_to_cfg(conn->metaCfg, netmsg->parts+2); if(cfg) { netconn_setScheme(conn, cfg); conn->onCfgSchemeCb(conn->onCfgSchemeCtx, cfg); } else { flib_log_e("Error processing CFG SCHEME message"); } - flib_cfg_release(cfg); + flib_scheme_release(cfg); } else if(!strcmp(subcmd, "FULLMAPCONFIG") && netmsg->partCount == 7) { flib_map *map = flib_netmsg_to_map(netmsg->parts+2); if(map) {