ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/socket/request.C
(Generate patch)

Comparing deliantra/server/socket/request.C (file contents):
Revision 1.164 by root, Fri Mar 26 00:59:22 2010 UTC vs.
Revision 1.169 by root, Thu Apr 8 17:36:54 2010 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4 * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2001 Mark Wedel 5 * Copyright (©) 2001 Mark Wedel
6 * Copyright (©) 1992 Frank Tore Johansen 6 * Copyright (©) 1992 Frank Tore Johansen
7 * 7 *
8 * Deliantra is free software: you can redistribute it and/or modify it under 8 * Deliantra is free software: you can redistribute it and/or modify it under
9 * the terms of the Affero GNU General Public License as published by the 9 * the terms of the Affero GNU General Public License as published by the
44 44
45#include <global.h> 45#include <global.h>
46#include <sproto.h> 46#include <sproto.h>
47 47
48#include <living.h> 48#include <living.h>
49#include <commands.h>
50 49
51/* This block is basically taken from socket.c - I assume if it works there, 50/* This block is basically taken from socket.c - I assume if it works there,
52 * it should work here. 51 * it should work here.
53 */ 52 */
54#include <sys/types.h> 53#include <sys/types.h>
630 LOG (llevError, "Unknown input state: %d\n", ns->state); 629 LOG (llevError, "Unknown input state: %d\n", ns->state);
631 } 630 }
632} 631}
633 632
634/** 633/**
635 * Client tells its version. If there is a mismatch, we close the 634 * Client tells its version info.
636 * socket. In real life, all we should care about is the client having
637 * something older than the server. If we assume the client will be
638 * backwards compatible, having it be a later version should not be a
639 * problem.
640 */ 635 */
641void 636void
642VersionCmd (char *buf, int len, client * ns) 637VersionCmd (char *buf, int len, client *ns)
643{ 638{
644 if (!buf) 639 INVOKE_CLIENT (VERSION, ns, ARG_DATA (buf, len));
645 {
646 LOG (llevError, "CS: received corrupted version command\n");
647 return;
648 }
649
650 ns->cs_version = atoi (buf);
651 ns->sc_version = ns->cs_version;
652
653 LOG (llevDebug, "connection from client <%s>\n", buf);
654
655 //TODO: should log here just for statistics
656
657 //if (VERSION_CS != ns->cs_version)
658 // unchecked;
659
660 char *cp = strchr (buf + 1, ' ');
661 if (!cp)
662 return;
663
664 ns->sc_version = atoi (cp);
665
666 //if (VERSION_SC != ns->sc_version)
667 // unchecked;
668
669 cp = strchr (cp + 1, ' ');
670
671 if (cp)
672 {
673 ns->version = cp + 1;
674
675 if (ns->sc_version < 1026)
676 ns->send_packet_printf ("drawinfo %d %s", NDI_RED,
677 "**** VERSION WARNING ****\n**** CLIENT IS TOO OLD!! UPDATE THE CLIENT!! ****");
678 }
679} 640}
680 641
681/** sound related functions. */ 642/** sound related functions. */
682void 643void
683SetSound (char *buf, int len, client * ns) 644SetSound (char *buf, int len, client * ns)
735 */ 696 */
736static void 697static void
737rangetostring (player *pl, char *obuf) 698rangetostring (player *pl, char *obuf)
738{ 699{
739 dynbuf_text &buf = msg_dynbuf; buf.clear (); 700 dynbuf_text &buf = msg_dynbuf; buf.clear ();
701
702#if 0
703 // print ranged/chosen_skill etc. objects every call
704 printf ("%s %s => %s (%s)\n",
705 pl->ranged_ob ? &pl->ranged_ob->name : "-",
706 pl->combat_ob ? &pl->combat_ob->name : "-",
707 pl->ob->current_weapon ? &pl->ob->current_weapon->name : "-",
708 pl->ob->chosen_skill ? &pl->ob->chosen_skill->name : "-"
709 );
710#endif
740 711
741 if (pl->ranged_ob) 712 if (pl->ranged_ob)
742 buf << " Range" << (pl->ob->current_weapon == pl->ranged_ob ? "*" : "") << ": " << pl->ranged_ob->name; 713 buf << " Range" << (pl->ob->current_weapon == pl->ranged_ob ? "*" : "") << ": " << pl->ranged_ob->name;
743 714
744 if (pl->combat_ob) 715 if (pl->combat_ob)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines