1. The client sends POST request to us-beta.patch.battle.net:1120 with the following XML data: Code: [Select] 2. If the server detects we have the lastest version it sends 204 (No Content) as said in the first post. If we need an update the server sends Code: [Select] HTTP/1.1 200 OK Server: Protocol HTTP Content-Length: 1118 Connection: close Content-Type: application/xml http://dist.blizzard.com.edgesuite.net/sc2patch/update/B14093B/sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-game-component-dl;sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-game-component-dl;FE4E80465692A2F9C47C2723D184E933;14093 http://dist.blizzard.com.edgesuite.net/sc2patch/update/B14093B/sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-locale-component-dl;sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-locale-component-dl;49750B9F1473283D7DA44622E021833B;14093 http://dist.blizzard.com.edgesuite.net/sc2patch/update/B14093B/sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-bnet-base-component-dl;sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-bnet-base-component-dl;68CC1B35027ECE4B1D1704666344A29E;14093 http://dist.blizzard.com.edgesuite.net/sc2patch/update/B14093B/sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-bnet-bin-component-dl;sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-bnet-bin-component-dl;423205FE7C3D74D01990A1BB37273ADE;14093 You can see the [... URL for the dl file ...];[... Name of the dl file ...];[... MD5 hash of the dl file ...];[... version number ...] 3. The client then gets the URLs from here and downloads and install them. 4. Then it checks again and if the server returns no update XML data it means that the client is lastest version. If the update server could not be found the launcher continues loading the game. The DL file itself is an MPQ archive. It has (a minimum of) two files: prepatch.lst - contains list of operations the updater should do. For example Code: [Select] extract sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-game.torrent download sc2-0.2.0.13891-0.3.0.14093-x86-Win-enUS-game.torrent The torrent file is also in the archive. The first line tells the updater to extract the torrent file (to the Starcraft 2 folder) and the second one is to start downloading it. It uses the blizzard downloader to do that. The actual update file we get by downloading the torrent is also an MPQ archive. (They just love mpqs don't they ) It contains the updated files in subdirectories. If an updated file is inside some of the base mpqs they aren't including the full mpq but only the updated file inside it. For example Code: [Select] \base\Mods\Liberty.SC2Mod\Base.SC2Data\GameData\[...file...].xml Then in the patch.lst file every line is a file to copy. From there these files are put into the mpqs or just copied to the directory. Code: [Select] BlizzardComponent.xml;base/Mods/Core.SC2Mod/Base.SC2Data\BlizzardComponent.xml;base/Mods/Core.SC2Mod/Base.SC2Data BuildId.txt;base/Mods/Core.SC2Mod/Base.SC2Data\BuildId.txt;base/Mods/Core.SC2Mod/Base.SC2Data Assets\Effects\Protoss\BlinkIn\BlinkIn.m3;base/Mods/Liberty.SC2Mod/Base.SC2Assets\Assets\Effects\Protoss\BlinkIn\BlinkIn.m3;base/Mods/Liberty.SC2Mod/Base.SC2Assets Code: [Select] [...File path inside the mpq...];[...Path to the file from the root of the downloaded update mpq...];[...Path to the MPQ archive inside the Starcraft2 folder...]\n patch.cmd contains the build numbers before and after and the Language version. hdfiles.lst and wowtest.lst seem to contain the files that should be in the SC2 folder. delete.lst - files to delete after the patching process.