--- deliantra/server/socket/request.C 2006/12/14 02:37:37 1.35 +++ deliantra/server/socket/request.C 2006/12/15 03:53:44 1.39 @@ -62,13 +62,8 @@ #include #include -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifdef HAVE_SYS_TIME_H -# include -#endif +#include +#include #include "sounds.h" @@ -155,7 +150,7 @@ static void clear_map (player *pl) { - client_socket & socket = pl->socket; + client_socket &socket = *pl->socket; memset (&socket.lastmap, 0, sizeof (socket.lastmap)); @@ -170,7 +165,7 @@ static void check_map_change (player *pl) { - client_socket & socket = pl->socket; + client_socket &socket = *pl->socket; object *ob = pl->ob; char buf[MAX_BUF]; /* eauugggh */ @@ -251,8 +246,8 @@ // initial map and its origin maptile *map = pl->ob->map; sint16 dx, dy; - int mapx = pl->socket.mapx / 2 - pl->ob->x; - int mapy = pl->socket.mapy / 2 - pl->ob->y; + int mapx = pl->socket->mapx / 2 - pl->ob->x; + int mapy = pl->socket->mapy / 2 - pl->ob->y; int max_distance = 8; // limit maximum path length to something generous while (*buf && map && max_distance) @@ -313,7 +308,7 @@ else snprintf (bigbuf, MAX_BUF, "mapinfo %s unsupported", token); - pl->socket.send_packet (bigbuf); + pl->socket->send_packet (bigbuf); } /** This is the Setup cmd - easy first implementation */ @@ -546,16 +541,7 @@ if (ns->status != Ns_Add || add_player (ns)) ns->send_packet ("addme_failed"); else - { - /* Basically, the add_player copies the socket structure into - * the player structure, so this one (which is from init_sockets) - * is not needed anymore. The write below should still work, as the - * stuff in ns is still relevant. - */ - ns->send_packet ("addme_success"); - socket_info.nconns--; - ns->status = Ns_Avail; - } + ns->send_packet ("addme_success"); settings = oldsettings; } @@ -710,7 +696,7 @@ << uint16 (face) << uint16 (smoothface); - Send_With_Handling (ns, &sl); + ns->send_packet (sl); } /** @@ -785,7 +771,7 @@ * can throttle. */ void -NewPlayerCmd (uint8 * buf, int len, player *pl) +NewPlayerCmd (char *buf, int len, player *pl) { int time, repeat; char command[MAX_BUF]; @@ -797,8 +783,8 @@ return; } - pktlen = net_uint16 (buf); - repeat = net_uint32 (buf + 2); + pktlen = net_uint16 ((uint8 *)buf); + repeat = net_uint32 ((uint8 *)buf + 2); /* -1 is special - no repeat, but don't update */ if (repeat != -1) @@ -808,18 +794,7 @@ len = MAX_BUF - 5; strncpy ((char *) command, (char *) buf + 6, len - 4); - command[len - 4] = '\0'; - - /* The following should never happen with a proper or honest client. - * Therefore, the error message doesn't have to be too clear - if - * someone is playing with a hacked/non working client, this gives them - * an idea of the problem, but they deserve what they get - */ - if (pl->state != ST_PLAYING) - { - new_draw_info_format (NDI_UNIQUE, 0, pl->ob, "You can not issue commands - state is not ST_PLAYING (%s)", buf); - return; - } + command[len - 4] = 0; /* This should not happen anymore. */ if (pl->ob->speed_left < -1.0) @@ -843,7 +818,7 @@ packet sl; sl << "comc " << uint16 (pktlen) << uint32 (time); - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); } @@ -998,7 +973,7 @@ /* Okay, this is MAJOR UGLY. but the only way I know how to * clear the "cache" */ - memset (&pl->socket.lastmap, 0, sizeof (struct Map)); + memset (&pl->socket->lastmap, 0, sizeof (struct Map)); draw_client_map (pl->ob); #endif } @@ -1111,7 +1086,7 @@ AddIfShort (pl->last_stats.Cha, pl->ob->stats.Cha, CS_STAT_CHA); } - if (pl->socket.exp64) + if (pl->socket->exp64) { uint8 s; @@ -1131,7 +1106,7 @@ } } - if (pl->socket.exp64) + if (pl->socket->exp64) { AddIfInt64 (pl->last_stats.exp, pl->ob->stats.exp, CS_STAT_EXP64) } else { AddIfInt (pl->last_stats.exp, (int) pl->ob->stats.exp, CS_STAT_EXP) } @@ -1154,7 +1129,7 @@ AddIfShort (pl->last_flags, flags, CS_STAT_FLAGS); - if (pl->socket.sc_version < 1025) + if (pl->socket->sc_version < 1025) { AddIfShort (pl->last_resist[ATNR_PHYSICAL], pl->ob->resist[ATNR_PHYSICAL], CS_STAT_ARMOUR) } else { @@ -1170,7 +1145,7 @@ } } - if (pl->socket.monitor_spells) + if (pl->socket->monitor_spells) { AddIfInt (pl->last_path_attuned, pl->ob->path_attuned, CS_STAT_SPELL_ATTUNE); AddIfInt (pl->last_path_repelled, pl->ob->path_repelled, CS_STAT_SPELL_REPEL); @@ -1178,13 +1153,13 @@ } rangetostring (pl->ob, buf); /* we want use the new fire & run system in new client */ - AddIfString (pl->socket.stats.range, buf, CS_STAT_RANGE); + AddIfString (pl->socket->stats.range, buf, CS_STAT_RANGE); set_title (pl->ob, buf); - AddIfString (pl->socket.stats.title, buf, CS_STAT_TITLE); + AddIfString (pl->socket->stats.title, buf, CS_STAT_TITLE); /* Only send it away if we have some actual data */ if (sl.length () > 6) - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); } /** @@ -1203,7 +1178,7 @@ << uint32 (pl->ob->face->number) << data8 (pl->ob->name); - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); SET_FLAG (pl->ob, FLAG_CLIENT_SENT); } @@ -1245,7 +1220,7 @@ sl << uint16 (animations[anim_num].faces[i]); /* flags - not used right now */ } - Send_With_Handling (ns, &sl); + ns->send_packet (sl); ns->anims_sent[anim_num] = 1; } @@ -1790,7 +1765,7 @@ uint8 extendedinfos; maptile *m; - client_socket &socket = pl->contr->socket; + client_socket &socket = *pl->contr->socket; check_map_change (pl->contr); @@ -1879,11 +1854,11 @@ */ got_one = 0; for (i = oldlen + 2; i < sl.length (); i++) - if (sl.buf[i]) + if (sl[i]) got_one = 1; if (got_one && (mask & 0xf)) - sl.buf[oldlen + 1] = mask & 0xff; + sl[oldlen + 1] = mask & 0xff; else { /*either all faces blank, either no face at all */ if (mask & 0xf) /*at least 1 face, we know it's blank, only send coordinates */ @@ -1959,7 +1934,7 @@ } if ((mask & 0xf) || need_send) - sl.buf[oldlen + 1] = mask & 0xff; + sl[oldlen + 1] = mask & 0xff; else sl.reset (oldlen); } @@ -1999,7 +1974,7 @@ if (socket.extmap) { *last_ext |= 0x80; - last_ext = sl.buf + sl.length (); + last_ext = &sl[sl.length ()]; sl << uint8 (d); } else @@ -2043,14 +2018,14 @@ mask |= 0x8; *last_ext |= 0x80; - last_ext = sl.buf + sl.length (); + last_ext = &sl[sl.length ()]; sl << uint8 (5) << uint8 (stat_hp); if (stat_width > 1) { *last_ext |= 0x80; - last_ext = sl.buf + sl.length (); + last_ext = &sl[sl.length ()]; sl << uint8 (6) << uint8 (stat_width); } @@ -2062,7 +2037,7 @@ mask |= 0x8; *last_ext |= 0x80; - last_ext = sl.buf + sl.length (); + last_ext = &sl[sl.length ()]; sl << uint8 (0x47) << uint8 (8) << (uint64)player; } @@ -2073,7 +2048,7 @@ mask |= 0x8; *last_ext |= 0x80; - last_ext = sl.buf + sl.length (); + last_ext = &sl[sl.length ()]; sl << uint8 (8) << uint8 (flags); } @@ -2125,12 +2100,12 @@ * value, so we don't send those bits. */ if (mask & 0xf) - sl.buf[oldlen + 1] = mask & 0xff; + sl[oldlen + 1] = mask & 0xff; else sl.reset (oldlen); if (emask & 0xf) - esl.buf[eoldlen + 1] = emask & 0xff; + esl[eoldlen + 1] = emask & 0xff; else esl.reset (eoldlen); } /* else this is a viewable space */ @@ -2146,16 +2121,16 @@ * it doesn't need draw! */ ewhatflag &= (~EMI_NOREDRAW); - esl.buf[ewhatstart + 1] = ewhatflag & 0xff; + esl[ewhatstart + 1] = ewhatflag & 0xff; } if (esl.length () > estartlen) - Send_With_Handling (&socket, &esl); + socket.send_packet (esl); } if (sl.length () > startlen || socket.sent_scroll) { - Send_With_Handling (&socket, &sl); + socket.send_packet (sl); socket.sent_scroll = 0; } } @@ -2191,9 +2166,9 @@ memset (&newmap, 0, sizeof (struct Map)); - for (j = (pl->y - pl->contr->socket.mapy / 2); j < (pl->y + (pl->contr->socket.mapy + 1) / 2); j++) + for (j = (pl->y - pl->contr->socket->mapy / 2); j < (pl->y + (pl->contr->socket->mapy + 1) / 2); j++) { - for (i = (pl->x - pl->contr->socket.mapx / 2); i < (pl->x + (pl->contr->socket.mapx + 1) / 2); i++) + for (i = (pl->x - pl->contr->socket->mapx / 2); i < (pl->x + (pl->contr->socket->mapx + 1) / 2); i++) { ax = i; ay = j; @@ -2235,7 +2210,7 @@ void send_plugin_custom_message (object *pl, char *buf) { - pl->contr->socket.send_packet (buf); + pl->contr->socket->send_packet (buf); } /** @@ -2257,7 +2232,7 @@ fatal (0); } - Send_With_Handling (ns, &sl); + ns->send_packet (sl); } /** @@ -2280,7 +2255,7 @@ fatal (0); } - Send_With_Handling (ns, &sl); + ns->send_packet (sl); } /** @@ -2290,7 +2265,7 @@ void esrv_update_spells (player *pl) { - if (!pl->socket.monitor_spells) + if (!pl->socket->monitor_spells) return; for (object *spell = pl->ob->inv; spell; spell = spell->below) @@ -2330,7 +2305,7 @@ if (flags & UPD_SP_GRACE ) sl << uint16 (spell->last_grace); if (flags & UPD_SP_DAMAGE) sl << uint16 (spell->last_eat); - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); } } } @@ -2339,7 +2314,7 @@ void esrv_remove_spell (player *pl, object *spell) { - if (!pl->socket.monitor_spells) + if (!pl->socket->monitor_spells) return; if (!pl || !spell || spell->env != pl->ob) @@ -2353,7 +2328,7 @@ sl << "delspell " << uint32 (spell->count); - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); } /* appends the spell *spell to the Socklist we will send the data to. */ @@ -2411,7 +2386,7 @@ return; } - if (!pl->socket.monitor_spells) + if (!pl->socket->monitor_spells) return; packet sl; @@ -2440,7 +2415,7 @@ if (sl.length () >= (MAXSOCKBUF - (26 + strlen (spell->name) + (spell->msg ? strlen (spell->msg) : 0)))) { - Send_With_Handling (&pl->socket, &sl); + pl->socket->send_packet (sl); sl.reset (); sl << "addspell "; @@ -2464,7 +2439,6 @@ } /* finally, we can send the packet */ - Send_With_Handling (&pl->socket, &sl); - + pl->socket->send_packet (sl); }