Commit Graph
100 Commits
Author SHA1 Message Date
ac-stef 381e770210 add authsetup command
authsetup contains all the funtionality needed to generate, load and save
private and public keys, and to lock and unlock the private key with a
password.

Private and public keys are used to authenticate the player to servers,
and are loaded from config/authprivate.cfg. Private keys can be stored
in an "encrypted with password" version - in which case the player has
to enter the password after game start. To prevent brute-force cracking
of the password, the key-derivation function uses a constant time to
encode (usually several seconds). Because of that, the decoding at game
start can be done in the background.

The private key is actually itself a public key generated from the
prepriv key. The prepriv key should be kept away from the computer, either
as hardcopy or on a thumbdrive. The prepriv key is not required to play
the game. It can be used to prove ownership of the private key, in case
the private key gets stolen. It can also be used to regenerate private
and public keys, in case they are lost. The prepriv key can also be
encrypted by its own password.

authsetup
  checks private and public key and returns "1", if they match.

authsetup pre preprivhex [psalthex pwdcfg]
  loads prepriv key into memory. optionally supports encrypted keys.

authsetup priv privhex [salthex pwdcfg]
  loads private key into memory. optionally supports encrypted keys.

authsetup pub pubhex
  loads public key into memory.

authsetup ppass preprivpass
  decrypts prepriv key with password

authsetup pass privpass
  decrypts private key with password

authsetup passd privpass [commandwhendone]
  decrypts private key with password in background. optionally executes
  cubescript command when done.

authsetup needpass
  returns "1" if the private key needs decryption.

authsetup genpre [prelen]
  generates new prepriv key.

authsetup genpriv
  generates private key from prepriv key.

authsetup genpub
  generates public key from private key.

authsetup newppass preprivpass [preprivfilename]
  encrypts prepriv key with new password and saves the result to file.
  The default filename is config/authpreprivate.cfg and an existing file
  gets overwritten - but the former file content is kept and also written,
  each line commented out.

authsetup newpass privpass [privatefilename]
  encrypts private key with new password and saves the encrypted private
  key and the public key to file. The default filename is
  config/authprivate.cfg and an existing file gets overwritten - but the
  former file content is kept and also written, each line commented out.

authsetup unarmed
  sets private and public keys to a fixed value. For testing only.
  Can be used to "log out".

authmemusage, authrounds, authmaxtime are only used, when new passwords are
  created (authsetup new[p]pass). authmemusage is the number of megabytes
  of RAM that are used for the password hash calculation. If authrounds
  is zero (as is default), then the hash algorithm calculates as many
  rounds as possible in the number of milliseconds specified in
  authmaxtime. If authrounds is a positive number, then that is the number
  of rounds to be done, regardless the required time. Note that, since the
  password hash algorithm is not endianness-aware, it is not possible to
  move an encrypted password to a machine with different endianness.
  Moving between 32- and 64-bit machines should be no problem.

  FIXME: the command is not blocked against use in multiplayer. It has to
         be determined later, if this is a problem or feature. Especially
         the background password calculation may be a problem.

DOCREF authsetup cryptodebug authmemusage authrounds authmaxtime
2016-08-26 14:28:54 +02:00
ac-stef 940cc2e3d9 crypto tool functions and ed25519 vector test
* FNV-1a:  very fast, non-cryptographic hash
* bin2hex, hex2bin:  hex ascii parser and hex string formatter
* ed25519test:  vector test for all ed25519 functions
* ed25519speedtest:  yep, that
2016-08-26 14:28:54 +02:00
ac-stef 806e0f4f7e add Ed25519 ECC signature algorithm
The Ed25519 sources were taken from the crypto_sign/ed25519/ref
subdirectory of the SUPERCOP benchmarking tool.
The Ed25519 software is in the public domain.

Contributors (in alphabetical order)
    Daniel J. Bernstein, University of Illinois at Chicago
    Niels Duif, Technische Universiteit Eindhoven
    Tanja Lange, Technische Universiteit Eindhoven
    Peter Schwabe, National Taiwan University
    Bo-Yin Yang, Academia Sinica
2016-08-26 14:28:53 +02:00
ac-stef b080d634fc add memory-heavy key derivation function
* basically a hash function that delivers keylen bytes calculated
  from password and salt
* uses a lot of memory and a quite complex algorithm, to make
  brute-force offline-attacks on short passwords as hard as possible
* last line of defense against "evil little brothers"
2016-08-26 14:28:53 +02:00
ac-stef 8c7baa979c add SHA512 hash function and an entropy collector
SHA512 was adapted from a few public domain sources and pseudocode from
wikipedia. The entropy collector gathers entropy from keyboard events and
mouse movement - and, just for fun, from screenshots.
The entropy pool is saved at program exit and reloaded at program start.
Entropy is used to re-seed the pseudorandom generator (not that it would
make a difference).
2016-08-26 14:28:53 +02:00
ac-stef a45d926919 remove current auth system
* fix tiger hash for bigendian (we use the byte output, not the chunks)
* remove all ECC functions and comment out all calls to it
2016-08-26 14:28:53 +02:00
ac-stef 9230561697 remove illegal chars from map config files
from now on, the server's going to be very pedantic about this...
2016-08-26 14:28:53 +02:00
ac-stef 652a097c91 sync worker threads with mainloop 2016-08-26 14:28:53 +02:00
ac-stef 89f1f69eec readmapsthread
server: load all maps into memory, scan for more maps
in the background
2016-08-26 14:27:51 +02:00
ac-stef c70808e5a4 more detailed entstats
Shows some results of the new map quality checks. tbc
2016-08-26 14:08:56 +02:00
ac-stef 6454a645ae new map checks and statistics menu
Visualise the results of "mapareacheck".
2016-08-26 14:08:56 +02:00
ac-stef 084be76825 new command mapareacheck
Calculate some key values to determine map geometry viability.

mapareacheck <what>
  Returns different sets of statistics, depending on the keyword "what":

  vdelta
    Returns table of numbers of cubes within a certain range of vdelta
    differences (steepness)". First entry is "0..2 cubes steep", next is
    "2..4" and so on.

  steepest
    Returns the coordinates of the steepest heightfield cube.

  total
    Returns the number of non-solid cubes on the map.

  pprest
    Returns the number of cubes _not_ visible from one of the probe
    positions.

  pp (default)
    Returns a table of all (currently 64) probe points of the map. Each
    probe point is listed with:
      - x-coordinate
      - y-coordinate
      - floor height
      - area visible
      - volume of visible area
      - average height in visible area

DOCREF mapareacheck
2016-08-26 14:08:56 +02:00
ac-stef 77b7e9bb87 new entity type "dummy"
Adds a new entity type for use in scripts. The entity does not affect
rendering or physics and is not saved to map files.
2016-08-26 14:08:56 +02:00
ac-stef a33577c039 sort mapmodel entities during map save
* sort colored lights behind white ones to avoid a light bug
* sort all clipped entities to the end of the list to speed up physics
* sort all pickups and playerstarts to use smaller index numbers to
  use less bandwidth
2016-08-26 14:08:55 +02:00
ac-stef c54eb7f173 calcmapareastats()
new metrics to assess map geometry
2016-08-26 14:08:55 +02:00
ac-stef e1ce0979d0 rewrite calculation of map geometry bounding box
and rename client-side struct "mapdims" to clmapdims (to avoid confusion
with server-side data)
2016-08-26 14:08:55 +02:00
ac-stef 48e2ce3863 new command sortmapsoundslots
...and some options for sortmapmodelslots and sorttextureslots

All three commands now accept three modifier keywords as arguments:
  nosort     do not sort the list alphabetically
  nomerge    do not merge any slots
  mergeused  merge used and unused (identical) slots freely
By default, the list is sorted and only unused identical slots are merged.
The keywords can be combined in any order. "nomerge" takes priority over
"mergeused".

Examples:

  sortmapmodelslots
    Sort the mapmodel slot list alphabetically and merge unused identical
    slots. Merging an unused slot is pretty much the same as deleting it,
    so this command sorts the list and removes unneeded double entries.

  sortmapmodelslots nosort
    Merges (deletes) unused double entries in the mapmodel slot list.

  sorttextureslots nosort mergeused
    Merges double entries in the texture slot list. If two identical
    entries are used in the map, all uses are mapped to the new combined
    slot. This leaves no visual changes on the map. Should be avoided, if
    texture slots have been renamed manually - and the the renaming isn't
    finished yet.

  sortmapsoundslots mergeused
    Sorts the mapsound slot list and merges all double entries.

DOCREF sortmapmodelslots sorttextureslots sortmapsoundslots
2016-08-25 11:48:45 +02:00
ac-stef 2ebf328bb8 limit number of mapsound slots
(hardcoded)

no reason why we need more mapsound slots than texture and mapmodel slots
combined...
2016-08-25 00:55:04 +02:00
ac-stef 71c65c90ca fix lighting error on edifice
16x16 mip doesn't render properly - had to break it up

thx BrutalSystem
2016-08-24 19:13:16 +02:00
ac-stef a4e84cbf20 cleanup 2016-08-24 12:38:33 +02:00
ac-stef 5813fd4e02 fix corner bounces
try really hard to avoid the seams between corner cubes

possibly overkill, but it's working...
2016-08-23 18:47:40 +02:00
ac-stef 5561d78f05 reduce bumps during cornerslide
backpedal 1/42 of a microstep to get out of the way of rounding errors

(clip ents are not supposed to have seams, but at least GCC builds
with -O3 seem to also require a little here - so, 1/333 for clips)
2016-08-23 18:46:27 +02:00
ac-stef 42cbd10e1d fix cornerslide speed
instead of using a constant (and always wrong) speed, use the same part
of the movement vector that x- and y- slides use

(sadly, this fix seems to raise problems with the previous "fix sliding
along corners" commit, which seems to have liked the constant speed...)
2016-08-23 11:44:09 +02:00
ac-stef af1144b45d optionally show ladder entities in edit mode
If enabled, render ladder entities as blue wireframes.


DOCREF showladderentities
2016-08-23 00:42:00 +02:00
ac-stef bffb588ba9 cleanup physics
should not break anything
2016-08-22 18:12:33 +02:00
ac-stef 7f0eb74f1c fix sliding along corners
fixes getting "stuck" while sliding along a 45° wall made out of
single corner cubes (most of the time)
2016-08-22 17:02:59 +02:00
ac-stef 50764a86cf fix rotated clip entity collision checks
* properly rotate the player hitbox
* add "corner bounce" (doesn't work flawlessly - but it's probably as
  good as possible with this kind of physics engine)
2016-08-22 16:24:34 +02:00
ac-stef 612a6291f1 new command sortmapmodelslots
* sorts all mapmodel slots alphabetically
* combines (merges) slots with the same model and parameters

DOCREF sortmapmodelslots
2016-08-22 15:08:20 +02:00
ac-stef a8c06d1510 new command sorttextureslots
* sorts all (but the first five) slots alphabetically
* combines slots with the same texture and scale factor

DOCREF sorttextureslots
2016-08-22 15:08:20 +02:00
ac-stef 4df01cbd06 fix restoring xmaps 2016-08-22 15:08:20 +02:00
ac-stef 6c5bf68921 show model preview in "Edit mapmodel slots" menu 2016-08-22 15:08:20 +02:00
ac-stef 71132e3d35 escape dollar chars in strings
not escape the char, but trigger the quotes, actually
2016-08-22 15:08:20 +02:00
ac-stef 97c21ea044 new keybind to scroll the console by mousewheel
(for now) by default bound to the '#'-key (and backslash)

Press and hold the '#'-key and scroll the wheel to scroll console.
Just pressing and releasing '#' resets the console position.

Without the console open, releasing '#' always resets the console position.
2016-08-22 15:08:20 +02:00
ac-stef 8b9bdfa3e4 fix texlists in edited official maps
copied, cleaned and sorted the texlists from ac_* to dev_* maps
(to fix nonsense lists, created by incomplete texture slot delete code)
2016-08-20 14:49:51 +02:00
ac-stef d5bd896189 properly adjust texlists when deleting texture slots
check texlists during save (and print warning, if errors were corrected)

also add (undocumented) command to patch messed up texlists
2016-08-20 14:45:41 +02:00
ac-stef d48675911f fix too thin walls on several maps
one more too thin wall, on ac_shine at pos (87|163) can't be fixed
without visual changes

thx Robtics
2016-08-18 17:29:04 +02:00
ac-stef 9f284ac746 fix rendering error on ac_outpost 2016-08-16 23:09:15 +02:00
ac-stef c18306da1c fix buffer overread in jpeg encoder
for image resolutions not divisible by 8
pad with black area
2016-08-16 23:06:29 +02:00
ac-stef 0fd9603dcc switch to connected server in serverinfo display by pressing 'c'
one more undocumented feature :)
2016-08-16 23:03:45 +02:00
ac-stefandaurhat 158a33caed cleanup config files
* moved compatibility.cfg and autosave.cfg to config/opt/
* firstrun.cfg merged into defaults.cfg

DOCREF compatibilitymode alive currole curmode getclientmode curteam
DOCREF findpn pstat_score orderscorecolumns
2016-08-15 11:52:49 +02:00
ac-stefandaurhat 46e659d4e0 fix rendering error on ac_desert 2016-08-15 11:52:29 +02:00
ac-stefandaurhat 938c2ccc87 fix pickup sound
hardwire armour sound for helmet - it's the same sound
2016-08-15 11:52:19 +02:00
ac-stef 7f9e2b19c9 fix glext command hanging without argument 2016-08-08 19:04:18 +02:00
ac-stef c96a983b65 fix edit selection height while grid is disabled
also: hide cleanshot helper scripts

DOCREF disablehud enablehud
2016-08-07 22:49:08 +02:00
ac-stef 27ebcdfeac fix dbgpos during spectating 2016-08-07 00:47:15 +02:00
ac-stef 6392527cb6 fix ktf indicator during spectating
also, disable ktf indicator during editing and enable damageblend, -roll
and -indicator during spectating

DOCREF ktfindicatoralpha
2016-08-07 00:26:29 +02:00
ac-stef 37ce06cd1c fix score calculation during spectating 2016-08-06 23:39:13 +02:00
ac-stef be4855cdcc show ktf indicator during reload 2016-08-06 00:57:52 +02:00
ac-stef 6b95708718 simpler damage indicator calculation 2016-08-05 16:27:41 +02:00
ac-stef 639067a003 add new ktf flag direction indicator
enabled by default, disable with "hidektfindicator 1"

DOCREF hidektfindicator
2016-08-05 16:26:24 +02:00
ac-stef 192a918844 add settings menu for crosshair effects 2016-08-05 13:33:28 +02:00
ac-stef f36c1661d8 less ugly screenshot type slider code
also: persistent
2016-08-05 01:42:02 +02:00
ac-stef 25d09990c8 fix accidental map changes
thx BrutalSystem
2016-08-04 22:38:02 +02:00
ac-stef ca0a868acd improve damageindicator
* now eight instead of four directions
* ignore self-inflicted damage
2016-08-04 22:01:12 +02:00
ac-stef 2fbbb04b76 move menu background texture to packages/misc
so that altering the menu background does not change maps that use it
as texture

packages/textures/makke/menu.jpg is being kept, because maps use it
2016-08-04 20:59:03 +02:00
ac-stef e9099965c1 fix render bug on ac_outpost
(easier to fix the map than to fix the renderer)

thx BrutalSystem
2016-08-04 20:54:53 +02:00
ac-stef 59d4f4d847 add embedded license information to all official maps
also add script to generate a summary map license file

new (undocumented) debug commands:
  loadmap <mapname>
    loads a map directly, easy to use from scripts

  debugline <filename> <text>
    writes text to file (no path names allowed)
2016-07-30 01:47:30 +02:00
ac-stef 0083c51b3b add menus to assign licenses to maps 2016-07-28 00:35:43 +02:00
ac-stef 611303b890 fix crash on failed write in writemapmodelattributes 2016-07-27 12:24:58 +02:00
ac-stef 3c2cac6121 simplify curmap command
no argument: just return the filename

DOCREF curmap
2016-07-27 12:23:56 +02:00
ac-stef a860cc58b0 add a map license and comment string to the map header
Two new string variables, mapinfo_license and mapinfo_comment, are stored
withing the header of a map file.

The variables are automatically read and written during loading and
saving maps. Default values are empty strings. The comment string is
ignored, as long as no license string is set. The license string is meant
to hold an abbreviated name of the license, picked from a list of
known map licenses.

DOCREF mapinfo_license mapinfo_comment
2016-07-26 15:41:40 +02:00
ac-stef 13ec9d692f strip embedded config files and optimise clip entities
* strip unused mapmodel, texture and sound slots from config files
* clip stair mapmodels with sloped clip entities
* remove double clipping

dev_douze has been replaced by a version from the AC 1.0 era, including
flag bases - but with no team spawns. Corners now utilise higher mips
where possible.

dev_stellar has not been optimised.
2016-07-25 23:06:21 +02:00
ac-stef a807716ecf convert official maps to format 10
* renamed (temporarily) to dev_*
* embedded all config files
* changed as many clip entities to tagged clips as possible

On ac_toxic and ac_venison all other clip entities also have been
optimised. Some bugs and unnecessary quirks on venison have been removed.

* toxic now uses 135 clipped entities (instead of 221)
* venison now uses 115 clipped entities (instead of 393)
2016-07-23 19:13:38 +02:00
ac-stef 112e3ad399 add tagclipped corner extension
new physics for tagclipped corner cubes:

* corners between non-solids: tagclips extend the corner
	 (visualisation does not reflect that, yet)
* corners between solids: fully clipped (like before)
2016-07-23 18:42:15 +02:00
ac-stef 7016cc81c8 fix display bug for texture previews
thx Robtics
2016-07-21 14:04:41 +02:00
ac-stef 5fe69aa4b4 drop cube 1 media package support
Drop support for maps outside packages/maps and for package config files.
(never been used in AC anyway)

also: generate all map related filenames with proper path separators
2016-06-13 23:22:33 +02:00
ac-stef 32ffd3a4cd replace non-thread-safe functions
replace all uses of strtok, localtime, gmtime and readdir

on platforms without safe versions, use homebrew or unsafe...
2016-02-28 23:14:47 +01:00
ac-stef 98d01d1f34 fix some errors and warnings for GCC 6
* do not use std::abs() because math.h includes one, that converts ints
  to double. Use own iabs(), which directly uses labs() instead.
* don't use the word "gamma" as name for variables
* don't use a homebrew round() function
2016-02-27 22:50:06 +01:00
ac-stef d107aa3cd6 added mapmodel menus sorted by author and distribution
all generated automatically from mapmodel attributes

also:
* fixed typo in model config
* concatuniq now works fine with spaces
2016-02-13 18:52:18 +01:00
ac-stef 535b9df746 define gamemode bitmasks 2016-02-07 18:34:32 +01:00
ac-stef 665c359907 add resetmenu
Short script to combine "delmenu" and "newmenu" as used in menuinit
scripts.
2016-02-07 18:34:32 +01:00
ac-stef 7f86ae8d9f new command getclosestent
getclosestent
  Returns the entity index number of the closest entity (or of the
  pinned entity, if one exists). Returns -1, if no entities are on the map.
  Returns always exactly the entity, that edit commands like delent
  will use next.

DOCREF getclosestent
2016-02-07 18:34:32 +01:00
ac-stef ecf178866e new command addentity
addentity <type>
  Adds an entity of the specified type at the current camera position
  and returns the index number of the new entity, so that the other
  attributes can be set by editentity.

DOCREF addentity
2016-02-07 18:34:32 +01:00
ac-stef 697197bd5b generalise sorting of lists of integer sets 2016-02-07 18:34:31 +01:00
ac-stef 4da510f51d fix http line recovery
this fixes the reconnect attempt after a http tcp connection was lost
2016-02-07 17:36:03 +01:00
ac-stefandaurhat 1917a07dfa fix flag visibility for htf on maps without bases
- fixes issue #140
- also removed some stale debug code
2015-12-12 22:22:01 +01:00
ac-stef 0e6476806a fix crouching, jumping and doublejumping
* fix the old check for different jump start heights as requirement
  for doublejumps
* better handle multiple binds for the "jump" command
* delay relaxed floorclamping for crouching
* remove some redundant code
2015-09-27 00:28:34 +02:00
ac-stef 196d47d34e limit max speed by consecutive doublejumps
Instead of applying 25% bonus speed with every executed doublejump (with
potentially unlimited top speed), limit the reachable max speed to 125%
of regular full speed.

This limits regular gameplay only marginally but removes a lot of cheat
potential.
2015-09-26 15:32:27 +02:00
ac-stef d75409a29c fix ladder physics
When both "forward" and "backward" keys are pressed, now the action
matches the last pressed one. Now the keys work on the ladder exactly
as with regular movement.
2015-09-26 11:34:47 +02:00
ac-stef 5006663d19 update VC project file
and add workaround for missing C99 type uint64_t in VC2008
2015-09-24 23:17:50 +02:00
ac-stef 917df65a51 remove all instances of round()
VS2008 doesn't have round() in math.h and the old inline function (removed
in 50d1413d, had problems in newer compilers). Now floor() or straight
casting to int is used. Let's see, which MS compiler will trip on that...
2015-09-24 19:51:50 +02:00
ac-stef 6571c8b012 new menu to configure package server priorities 2015-09-17 19:14:30 +02:00
ac-stef 16565a2e05 allow package servers to be disabled or deleted
This is coded into the priority of a server:
* a priority of -1000 or lower marks a server as disabled
* a priority of -10000 or lower excludes a server from being saved to
  pcksources.cfg at program end, so a game restart will delete the server
  from the list
2015-09-17 16:41:05 +02:00
ac-stef 12a05d41e9 add interface for timedwait on semaphores
According to SDL documentation, the SDL implementation of timedwait may
suck on some platforms, so it should only be used, where high CPU usage
during the wait is no issue.

getpckserver() will now only wait for one second for access to the
package server list and return an error instead of waiting indefinitely.
2015-09-17 16:40:59 +02:00
ac-stef cbd0e7b4bc add timeout and manual abort to connect() 2015-09-15 13:18:03 +02:00
ac-stef ecc63d7047 more thread wrapper functions
Add code to detach threads without losing any ressources.
(use POSIX libs when SDL is not available)
2015-09-15 13:18:03 +02:00
ac-stef f6c161bcc5 add map export to format 9
Export to the map format of AC 1.2. Use with caution. Experimental.
2015-09-14 16:32:56 +02:00
ac-stef f424c95a7f allow the package server ping thread to take ages
Don't have the main thread wait for the ping thread, because the ping
thread may take a long time to respond - when a server connection can't
be established. Sadly, there's no timeout for "connect()".
2015-09-14 16:03:09 +02:00
ac-stef 5a4b605b33 fix flag drop position under water
Just placing the flag on top of the water didn't work for fully flooded
map areas, as the flag went out of reach.
This fix tries to float the flag up to the surface and stops, if something
blocks the way.
2015-09-14 13:57:55 +02:00
ac-stef 532453b9f8 tweak command completion
If the fragment is also a full command, skip that command during the first
round of TAB completions.
2015-09-08 21:03:06 +02:00
ac-stef 396eae3ee0 fix #131
although I doubt, that anyone ever fell for that

(the fix prevents, that nickname completion can change the first char of
the console string to a slash, which would change the line from chat to
command)
2015-09-08 20:22:07 +02:00
ac-stef 91753026dc fix enet issue #31
easier to fix the library than every use of the functions
2015-09-08 11:51:02 +02:00
ac-stef d86f6cc6ff rename ERROR macro
seems to be defined otherwise on windows
2015-09-07 22:34:35 +02:00
ac-stef 8f06af0e59 travis update
don't install curl libs
2015-09-07 19:52:06 +02:00
ac-stef 6c97202aa3 retry mapmodel downloads
Mapmodels which were not found once are put on a list and not tried to
be loaded again. With this commit, the list is cleared during a map load
if autodownload is enabled. This causes all missing models to be
downloaded.

Fixes issues with manually aborted autodownloads.
2015-09-07 14:53:57 +02:00
ac-stef 68c3ea43b1 improved http error handling
* don't treat 404 as http error
* real errors return -1 and disconnect
* -1 is treated as real error
2015-09-07 14:53:57 +02:00
ac-stef 58e033a1e3 add debug info to autodownload
In debug binaries and/or when the variable autodownloaddebug is set to 1,
more debug output is produced.

DOCREF autodownloaddebug
2015-09-07 14:53:57 +02:00
ac-stef fd2109adc5 add support for port and path settings for autodownload servers
actually, addpckserver now supports a full url as "host" field - but only
domain, port and path are used
2015-09-07 14:53:57 +02:00
ac-stef 9965f53d28 fix filtertext
cropping space should work now
2015-09-07 14:53:57 +02:00
ac-stef 7bdd91bc9f improved timeout handling and progress bar for autodownloads
http get now uses two timeout values: one for the max time since last
server response, and one for total download time.

When AC is waiting for a server response (before a http header was
received), the progress bar will show the timeout "completion".
2015-09-07 14:53:57 +02:00