r1ch.net forums
* Home Help Search Login Register
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: b2746 dedicated Questions.
Pages: [1]
Print
Author Topic: b2746 dedicated Questions.  (Read 5592 times)
TONY
Member

Posts: 3


« on: December 19, 2004, 11:35:09 am »

a) My logfile quit updating this morning, so I set the new cvar to "qconsole.log", didnt seem to help. I'm using logfile 3, it was working prior to update. Do i need to do something else?

b) I started getting a warning message, it is not on my console now, but it was similar to warning: mod has failed to denullify entry 4. I will watch for it again, to get exact message, but if that looks familiar, can I supress it? It appeared as though it was going to add many entries to the console log, but I'm not sure.

general:

uknown number of connection arguments from [xxx.xxx.xxx.xxx]--7. I get this on several players, should I be concerned?

Thank You
Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #1 on: December 19, 2004, 11:51:06 am »

Heh, I was wondering how long it would be before someone came across a mod that didn't clean up unused entities Smiley. What mod were you running that caused this? Basically what this warning means is that the mod is sending entities to the server that are marked as "not in use", so these should never actually occur... but obviously some mod out there has a few bugs in this regard Smiley.

I'm not entirely sure why the logfile would suddenly stop updating though. Are you sure something else like disk space isn't a problem? Does logging to a different file help any? One thing to note, logfile_name must be set before logfile as once logfile is set to anything other than zero, the log is opened and it's too late to change the name.

The "unknown connection arguments" just is a warning of a modified client. NoCheat and old versions of R1Q2 are known to generate this warning, it's quite harmless and I should probably remove it.
Logged
zorg
Member

Posts: 49


« Reply #2 on: December 19, 2004, 12:14:07 pm »

Well, same happens here.
The logfile (either set to 2 or 3 and indepented on what name it is set to) only updates every few time periods. I still do NOT know the exact amount of time.
From fresh start of the server, the logfile is written, but is empty.
Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #3 on: December 19, 2004, 12:22:52 pm »

logfile 1 and 3 are unbuffered (immediate update), 2 and 4 are buffered (every few kb update). Note that this is changed from previous versions where 2 and 4 were unbuffered.
Logged
zorg
Member

Posts: 49


« Reply #4 on: December 19, 2004, 01:01:05 pm »

Oh... that's why.

In this case, it is my fault.... again rolleyes
Logged
TONY
Member

Posts: 3


« Reply #5 on: December 19, 2004, 01:03:23 pm »

thanks for the response

a) The mod is Weapons of Destruction 6.08. It no longer being updated and I dont have the source. I suspect it has several bugs , hehe.
Thanks for the info.

b) I had "SET" in front of logfile insetead of "set", i guess logilfe defaults to none and the release I was running didnt mind my typo , dunno.. Working now though , with or without logfile_name. Smiley
Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #6 on: December 19, 2004, 01:12:25 pm »

I'll probably remove the warning and optionally make the server ignore entities that are supposedly not used any more. Right now if an ent is marked as not in use, it still gets sent to players. The problem is, is the mod buggy by not updating "in use" flag or does the mod require these entities to be sent to players and the mod author unaware that they were marked as not in use? The technically correct behaviour would be to not send them, but I suspect that might cause issues with buggy mods. I'll make it an option in a future build most likely.
Logged
Anonymous
Guest
« Reply #7 on: December 19, 2004, 04:36:37 pm »

Hey.
You should remove the warning because it can appear even on regular q2 DM. Here's why:
your sv_ents.c function SV_BuildClientFrame
Code:

...
clent = client->edict;
if (!clent->client)
return; // not in game yet
...
for (e=1 ; e<ge->num_edicts ; e++)
{
ent = EDICT_NUM(e);

// ignore ents without visible models
if (ent->svflags & SVF_NOCLIENT)
continue;

// ignore ents without visible models unless they have an effect
if (!ent->s.modelindex && !ent->s.effects && !ent->s.sound
&& !ent->s.event)
continue;

if (!ent->inuse)
{
Com_Printf ("WARNING: Mod didn't nullify unused entity %d!\n", e);
}
...

When client connect to the server function ClientConnect is called. In the function you can see:
Code:

...
// they can connect
ent->client = game.clients + (ent - g_edicts - 1);
...
ent->svflags = 0; // make sure we start with known default
...

The client is initialized so the first "if" check in function SV_BuildClientFrame which I have pointed above is skipped. The second "if" check (if (ent->svflags & SVF_NOCLIENT)) is skipped also because "#define SVF_NOCLIEN 0x00000001" and the game sets it to 0. Now (when client is connected) he waits until his map is loaded and THEN comes function ClientBegin which sets "ent->inuse = true;". So there is a time when "ent->inuse == false", "ent->svflags == 0" and your warning is printed to the console Smiley. Theoretically there is third "if" check (if (!ent->s.modelindex && !ent->s.effects && !ent->s.sound && !ent->s.event)), but when client disconnects game sets only ent->s.modelindex to 0. So the other s. things can be still != 0. I hope you get my point. Sorry for my english.
Thanks.
- Harven
Logged
Harven
Guest
« Reply #8 on: December 19, 2004, 05:08:36 pm »

Ah, the mod creators (like me) should set s.effects s.sound and s.event to 0 in ClientDisconnect. Anyway the old mods still will generate the warning which we are talking about.
Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #9 on: December 20, 2004, 06:12:08 am »

Well it exposed some issues so it was a good thing to try Smiley. This shows that mods should ideally set all the effects as Harven mentioned to 0 on client disconnect.
Logged
Harven
Guest
« Reply #10 on: December 20, 2004, 08:50:41 am »

Maybe you could put something like this:
Code:
     if (!ent->inuse && ent->client && (ent->s.modelindex || ent->s.effects || ent->s.sound || ent->s.event))
         ent->s.modelindex = ent->s.effects = ent->s.sound = ent->s.event = 0;

before
Code:
     // ignore ents without visible models unless they have an effect
      if (!ent->s.modelindex && !ent->s.effects && !ent->s.sound
         && !ent->s.event)
         continue;

Or just:
Code:

      if (!ent->inuse && !ent->client)
      {
         Com_Printf ("WARNING: Mod didn't nullify unused entity %d!\n", e);
      }
Logged
Pages: [1]
Print
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: b2746 dedicated Questions.
Jump to:  

Powered by SMF 1.1.19 | SMF © 2013, Simple Machines