Skip to content

Commit

Permalink
Fix pak order when reconnecting to a server.
Browse files Browse the repository at this point in the history
When /connect to the same server is issued while already connected, an initial call to CL_Disconnect will remove all pak file references
and reset the pak order.
Reordering only occurs through FS_Restart, which in turn is called when checksum feed changes. Because we reconnect to the same server,
checksum feed never changes and pak file order is not restored to server order again. With certain pak file constellations between client/server,
this may result in an inability to load files from paks which are not correctly detected as referenced paks.
  • Loading branch information
Thilo Schulz committed Aug 1, 2011
1 parent e5ddcee commit 8ab958f
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions code/qcommon/files.c
Expand Up @@ -3111,12 +3111,12 @@ static void FS_ReorderPurePaks( void )
searchpath_t **p_insert_index, // for linked list reordering
**p_previous; // when doing the scan

fs_reordered = qfalse;

// only relevant when connected to pure server
if ( !fs_numServerPaks )
return;

fs_reordered = qfalse;

p_insert_index = &fs_searchpaths; // we insert in order at the beginning of the list
for ( i = 0 ; i < fs_numServerPaks ; i++ ) {
p_previous = p_insert_index; // track the pointer-to-current-item
Expand Down Expand Up @@ -3889,9 +3889,10 @@ qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
Com_GameRestart(checksumFeed, disconnect);
return qtrue;
}

else if(checksumFeed != fs_checksumFeed)
FS_Restart(checksumFeed);
else if(fs_numServerPaks && !fs_reordered)
FS_ReorderPurePaks();

return qfalse;
}
Expand Down

0 comments on commit 8ab958f

Please sign in to comment.