etherpad-lite/src/node
Chocobozzz 43ca44e444 minify: make conditional requests work. No HTTP/304 was ever generated and file were reminified uselessly.
By specification [0], the if-modified-since HTTP header sent by browsers does
not include milliseconds.

Before this patch, let's say a file was generate at time:
    t_real-file         = 2020-03-22T02:15:53.548Z (note the fractional seconds)

When issuing a conditional request, the browser would truncate the fractional
part, and only request an if-modified-since with this contents:
    t_if-modified-since = 2020-03-22T02:15:53.000Z

The minify() function would return HTTP/304 only if
t_if-modified-since >= t_real-file, but this would never be true unless, by
chance, a file was generated at XX.000Z.

This resulted in that file being minified/compressed again and resent to the
client for no reason. After this patch, the server correctly responds with
HTTP/304 without doing any computation, and the browser uses the cached file.

[0] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since
2020-03-23 11:34:01 +01:00
..
db db/SecurityManager.js: accessing without session a public group pad no longer causes a crash 2019-12-26 00:30:43 +01:00
eejs use latest ejs 2015-04-11 09:53:27 +01:00
handler PadMessageHandler: use a predefined color when authorInfo.colorId is not defined 2020-03-20 22:32:06 +01:00
hooks security: when served over https, set the "secure" flag for "express_sid" and "language" cookie 2019-12-07 04:36:01 +01:00
utils minify: make conditional requests work. No HTTP/304 was ever generated and file were reminified uselessly. 2020-03-23 11:34:01 +01:00
easysync_tests.js Revert "51c14d9947 changed the return value of" 2015-02-16 06:22:49 +01:00
padaccess.js access controls: promisification 2019-01-23 16:29:36 +00:00
README.md minor typo fix 2019-08-08 21:58:30 +02:00
server.js runtime: deprecate node 8.x. Require node >= 10.13.0 starting from Etherpad 1.8.3 2019-10-20 00:02:00 +02:00
stats.js node8: we no longer need to use a shim for Object.values in stats.js 2019-02-19 22:01:12 +01:00

About the folder structure

  • db - all modules that are accessing the data structure and are communicating directly to the database
  • handler - all modules that respond directly to requests/messages of the browser
  • utils - helper modules

Module name conventions

Module file names start with a capital letter and uses camelCase

Where does it start?

server.js is started directly