MantisBT - Zandronum
View Issue Details
0000835Zandronum[All Projects] Bugpublic2012-05-06 15:102018-09-30 20:24
unknownna 
Torr Samaho 
highmajoralways
closedfixed 
98d 
1.11.1 
0000835: Some monsters don't appear on the client-end after changemap map changes until it opens the console/menu
Attached screenshots. The monsters appear once you open the console/menu.
1. skulltag.exe -iwad plutonia.wad -host +map map32
2. Connect a client to the server.
3. "changemap map32" in the server console.
4. Exit the intermission screen.
This also happens in 98e. It seems to be a packet issue.
No tags attached.
related to 0000679closed  "Connection interrupted" OMFG (hard to explain, please read on) 
png Screenshot_Doom_20120506_170200.png (130,458) 2012-05-06 15:10
/tracker/file_download.php?file_id=606&type=bug
png

png Screenshot_Doom_20120506_170047.png (161,223) 2012-05-06 15:10
/tracker/file_download.php?file_id=607&type=bug
png
Issue History
2012-05-06 15:10unknownnaNew Issue
2012-05-06 15:10unknownnaFile Added: Screenshot_Doom_20120506_170200.png
2012-05-06 15:10unknownnaFile Added: Screenshot_Doom_20120506_170047.png
2012-05-06 15:10unknownnaStatusnew => confirmed
2012-05-06 15:12unknownnaAdditional Information Updatedbug_revision_view_page.php?rev_id=1935#r1935
2012-05-06 15:45TIHanAssigned To => TIHan
2012-05-06 15:45TIHanStatusconfirmed => assigned
2012-05-08 23:30TIHanNote Added: 0003604
2012-05-08 23:30TIHanStatusassigned => feedback
2012-05-09 01:27TIHanNote Edited: 0003604bug_revision_view_page.php?bugnote_id=3604#r1978
2012-05-09 02:51TIHanNote Added: 0003607
2012-05-09 02:52TIHanPrioritynormal => high
2012-05-09 02:52TIHanSeverityminor => major
2012-05-10 01:58TIHanNote Added: 0003609
2012-05-10 01:58TIHanStatusfeedback => acknowledged
2012-06-09 13:22Torr SamahoCategoryGeneral => Bug
2012-07-29 12:33Torr SamahoRelationship addedrelated to 0000679
2013-01-06 19:21Torr SamahoNote Added: 0005710
2013-01-06 19:21Torr SamahoAssigned ToTIHan => Torr Samaho
2013-01-06 19:21Torr SamahoStatusacknowledged => needs testing
2013-01-06 19:21Torr SamahoTarget Version => 1.1
2013-04-05 21:19ArcoNote Added: 0006236
2013-04-05 21:43DuskStatusneeds testing => resolved
2013-04-05 21:43DuskFixed in Version => 1.1
2013-04-05 21:43DuskResolutionopen => fixed
2018-09-30 20:24Blzut3Statusresolved => closed

Notes
(0003604)
TIHan   
2012-05-08 23:30   
(edited on: 2012-05-09 01:27)
This is indeed quite scary. Looks like the client didn't receive all of the packets. When you open the console, it sends a command to the server and the server replies, but it also comes with the monster data that the client did not get.

Edit: I can confirm that this happens on level authentication.

(0003607)
TIHan   
2012-05-09 02:51   
I still need more time to study this; but, increasing sv_maxpacketsize to 8192(max) seems to solve the issue. However, I doubt this is a good idea and should stay at the default 1024.

This issue is also related to when you join this level via by a hard map reset "map map32". You notice your screen hanging until you do an action.

The cause is that the packet we are trying to send is bigger than whatever the sv_maxpacketsize is. It will just send whatever information it can to the client. Hence the missing cyberdemons. Going to console fixes the issue as when the client receives the server's response, it notices that its packet is out of sequence and requests the server for the missing packets associated for the missing sequences.

Now, we are not even talking about an enormous amount of data here. The whole snapshot to this level was 11kb...

Here is the code that does this:

    // Make sure we have enough room for the upcoming message. If not, send
    // out the current buffer and clear the packet.
    pBuffer->ulCurrentSize = pBuffer->ByteStream.pbStream - pBuffer->pbData;
    if (( pBuffer->ulCurrentSize + ( ulSize + 5 )) >= SERVER_GetMaxPacketSize( ))
    {
        if ( debugfile )
            fprintf( debugfile, "Launching premature packet: %d\n", bReliable );

        // Lanch the packet so we can prepare another.
        SERVER_SendClientPacket( ulClient, bReliable );
    }


The information that gets lost if the packet size is greater than the max will not be handled unless the client tells the server it is missing packets.
(0003609)
TIHan   
2012-05-10 01:58   
With a discussion with Torr, we've decided to hold this off until after 98e is released as it requires some re-design in unifying some code to effectively handle the problem. We feel we shouldn't change this structurally before the release of 98e.
(0005710)
Torr Samaho   
2013-01-06 19:21   
I think I found a pretty simply way to fix this. Please test if this fixes the issue.
(0006236)
Arco   
2013-04-05 21:19   
Fixed in the latest verison.