Skip to content

v2.0.0

Compare
Choose a tag to compare
@thecoshman thecoshman released this 02 Jun 15:27
v2.0.0
269dc9b
Temporary thug exchange the same story

BREAKING:
  * id=s of files (#-anchors) in directory listings changed to be
    the filename but tr " _, rather than filename but tr . _ (and "s unescaped!)
  * id=parent_dir changed to id=..
    (54634cfbd2d14d348492575ce386684ad96b107d)
    (523f91ceb8191a52584212c7e3ba7732396e867b)
  * No longer updateable from crates.io; update with
      cargo install -f --git https://github.com/thecoshman/http
    (https://github.com/thecoshman/http/pull/160#issuecomment-2143877822)
    (e451dd30932f1d480cda52a2b9982700b1341807)
    (269dc9bfaa762f9aec49824c2da0d0297e102d98)

Fixed:
  * Blockdev size detexion on musl/*BSD/&c.
    (9e6fcd11691d01fa2e304b7a7d0fe23b859306a1)
    (be7de1362d2e887b0b3dde6f59446a09c5251d37)
    (bc41cb4f2aab356d623e3c9f3298c2cb750bec0f)
    (875baea88d7b2ae827e9b79e7a73319869a4d474)
    (448f96f8d3548054fd414171dfe279e9d52a0c70)
    (#155) (#157) (#158)
  * Truncated-at-100-entries directory uploads on Chromium
    (37bbea4a55a539d5dab05a8494cc63200b4decce)
  * MacOS marking all files as WebDAV executable
    (7e368b8ad86c95f8855475ad28128450f5ccde2f)
  * Potentially hitting NAME_MAX when deciding on temporary directory
    (d151f6e628decca9e1d713d3d39460150a7e4f05)
    (62027be5ad5abc186027676969a9d700f09a2ae0)
  * Potentially using path of removed file for cached-as-incompressible files
    (a6514ef392c2e2dd1493a1d5e9a9ea582a70c719)
  * Temporary file for uploads not being removed
    (2d973a90dc5f41245e9b1d8608440163e06ec41d)
    (cdee6b3758edbbada5a3a62d7d70fc10d78bcdde)
  * All CPUs going 100% for a few seconds on Ctrl-C on Win32 sometimes
    (c2972714b38b68874a657c2655b0f8319a35b874)
  * /'s index with -wd first directory having full-width instead of square icons
    (9586e2f1315eee28d52ce2a2ada1514f738377b5)
  * Max (11) brotli encoding strength reduced to 9 (11 takes 50s to encode 11M!)
    (ec93678654036d5bd798806f39eac9cc41e4dd20)
  * PROPFIND of <Win32LastAccessTime> returning <Win32FileAttributes>
    with <Win32LastAccessTime>'s data
    (23cd2b65f8bf0d57f9dfea7dae7e1e9bed0f16d0)
  * -m only taking UTF-8 data even though it's for paths
    (5c36161cb6b93c02fc14500b51660ba7a0396b63)
  i Closed range requests reading the whole response body into a buffer
    (c72479e8e63fbc5f61bb4c59e6b0ae14206b2e34)
    (3df48fe82a9da19324659559340992d43935b036)
  * PROPFIND Depth: infinity panicking when encountering non-directories
    (6dc1c8e8e20ae073dc867f108432701261490330)
  * Don't require the current extension to be UTF-8 when encoding a file
    (db03ce32dd9d56106fd9129bdd7817760a5c8279)
  * Localising stamps in 1000-file directory on Android 14 Browser.apk (Chrome):
    8+s -> ~200ms
    (solution by @the-eater)
    (https://cijber.social/@eater/112506297971225464)
    (d1898e38a7d9af99738ca14ce3cd73c67baa57bb)
  * Double-click-to-select text in web UI rename box
    (f945289f5d8d29ad57fa08a9ad66403839287817)
  * " unescaped in listing href=s, making them unnavigable
    (044a31cd0ef745e7b09f316e05635658c4f24684)
  * If encoded file was removed from temp dir, re-encode it instead of panicking
    (0478dd7d6a96fd5a2ab75c537cbcae8222ef8ef3)
  * Clicking on the Manage column of Create directory submitting an empty MKCOL
    (26e36cc4827c6169e5f8ffcf533f7353f96b1999)
  h hyper RUSTSEC-2021-0078: potential desync with Content-Length: +123
    (d9fc08a1a59019873e35fbea6747488c427b05f9)
    (#140)
  h hyper RUSTSEC-2021-0079: potential desync with Transfer-Encoding: chunked
    (a3ae6fc583df77049513cad89b8775094bae58b7)
    (#140)
  h traitobject RUSTSEC-2020-0027: reliance on fat pointer representation
    (4b22b6a236843b828182204fbb541aa251b77143)
    (#140)
  * background-color in directory listing adapted to potential dark theme
    (332d737c241c1033bbe392cb567d66833a301359)
  * Files called file_upload and new_directory potentially interfering
    with directory listing controls
    (548cfe1c50b1b7bf8dc6c3d692757f9146283add)
    (ea94cc80a35173439ee78da6feff5ef9a0ad2cf2)
  * Add id=.. in mobile listing
    (523f91ceb8191a52584212c7e3ba7732396e867b)

Changed:
  * Double-iteration over directory uploads removed
    (6662d10b4734fe3d5861bdaedebe630d6f145248)
  * Don't-try-to-encode extension list updated
    (d6ac96f0780f9515d96cd3fd4cc40de16a711f4e)
    (466ca6664a565ae49e08310fdbf34ca33e69e82f)
  * ETag generator is also used to cache file hashes (=> file not read twice)
    (2e414a1399562f673433b5005e4894f1bec451ff)
  i Always fully 1M-buffer file I/O (used to be 8k)
    (e717b3136884b7222624501c214ee6b15641046d)
    (0584eda731ca98a6e99c5979d3d4600a18541652)
    (13e1b5ab272fb2517bf073e0c4a6180e25094b2b)
    (7c6d76869e197249d2a8711be87cffa15632fe61)
  * Also remove the top-level temporary directory (but ignore error)
    (93ef182f7765910450201d7f9055c82cd5141706)
  h Start threads on demand, up to the limit, then decay on inactivity
    (wait 5*threadnum seconds before exit), but keep 1,
    rather than always having nproc*8
    (e2426c17d04eab7af00fd8dc06392cd29fcbc995)
    (bbc1955b6323f668f5c7c40af9129ade1667d5fc)
    (d7ae221f7f020c5510e5b22a17dfcd1fc587b854)
    (0c63fc6916ad34211ddff5142c856eb8c5c8c06c)
    (0af886b5024dfaa57963dd3a7e696efcaeb445db)
  * Re-compressed favicon.png (1460B) now used as the favicon inlined in indices
    instead of a 15k(!+base64) ICO
    (5fbd4f1fd34e64055fdc4a301c808d082a974452)
    (c81df165631642372d797d55fe13a41189bf91ce)
  h Never-used bzip2 encoding removed (+ asking for zstd encoding is alloc-free)
    (51064cc3d68b778799db7edbfbdd9d4ddac96be2)
    (0876b9bfabb2d0a9958dca68166dba57a33962d2)
  * PUT symlink isolation is the same as with GET's (returns 404, doesn't read)
    (e25906f9f3de4f56539432e5cc438b5488d84c50)
  * Useless HTML attributes in generated responses removed
    (22d5924dfa3580d442ac3c8c55b7519e610a8de7)
  * Rename UI suggested filename no longer includes trailing / for directories
    (f945289f5d8d29ad57fa08a9ad66403839287817)
  * Replaced <meta name="application-name" content="http">
           & <meta name="author" content="http developers">
    with <meta name="generator" content="http ${VERSION}">
    (56b2e9316bbf5b9b315a25276970438d5793ae61)
  * Mobile directory listings simplified and reduced by 17% in size
    (73f3a9502678214f9ed61672b3444e0c7a5ce467)
    (5a7304d10d0357f174dc58c4ddcd2dc856c7fb3a)
    (46a21e2645804f99d7c0d053a7871a0df2ba22e4)
    (487af0168e1256671f13a75fef4488776e504464)
    (e76e92f85cf6f7b417a696f89d340805000e56be)
    (99538ed3722cf70214761af496068dd91523dd61)
    (325cb5176cd9241074f8c091873715a5546e207c)
    (6eceb96e8f2696db1250900b40e71ed11a5b68f5)
    (4a41b3d1e5ce9d3814627e840e52dd312f7806cf)
  * Desktop directory listings only allow tabbing to /one/ link per row
    (ce6c5f97f5b845346c71703dd6396fbf3a5e5ed3)
  * Desktop directory listings have "Create directory" colspan=3
    (9a79f6d8b9c75c620dbc6bcac8d7b34618cf04fa)
    (93d2fe0ce01b8f45501a21d015c10fedd1f11d7e)

New:
  * Return ETag and honour If-None-Match/If-Modified-Since for GETs
    (75c6f0770286aa4a5b7b7f22425bab052a354d4d)
  * Live read-out of outstanding requests when uploading from generated index
    (4cac7c593997119a7edb672e8110acc9fc91ab8f)
  * Invent X-Last-Modified: millis-since-epoch header to set mtime on PUT files
  * Accept X-OC-MTime: seconds-since-epoch     header (Android Totalcmd-WebDAV)
    (a59b521296c778f3073176dd0330d1251789e6e9)
    (e47669d96db3019a50b6e6b2a5f47437e99505ac)
    (d3f4e8cf58600106d0fe6919d3a338303cfa0de0)
    (bbed9e8440155a5a864b99903be80046094a71c2)
  * Actually handle PROPPATCH at all, and allow changing:
    + Win32{Creation,Last{Access,Modified}}Time  (Windows client)
    + executable                                 (davfs2)
    (248d43941b5a0184cfcaca53d79fcc447337fc15)
    (6df27cc188e5831b2e89b75e053fa8c7cafd660b)
    (2a4889fe0a3ac6bd2fb4a1068a1d8b5df8a87997)
    (98d12fceab86de72ff7bca62c7f8ecdda6d6e461)
    (aaa9ded8cb1651dea4a7cac981240e70c6b8424f)
  i Limits on size    of encoded files with --encoded-{filesystem,generated} 20M
  i Limits on max age of encoded files with --encoded-prune 1d
    (64f121fb5aff91128d27c5074c4a0a979f882450)
    (7419e7a8174e53ce41b50108e18728572f498a0f)
    (e1bb29bfb10eb4763b0380a2ef4b9e70a303ae16)
    (f472c1f43d6c0df2927187d115afc1223b0c749f)
    (a419540db3f6926fa651660106e874fd7fbd0fb3)
  * -Q/--quiet-time to remove [%F %T] prefix in log
    (58898a868090a3aa3e33a6721d463a76c1273958)
  * If PUTted file doesn't already exist, copy it directly from the request body
    (e95600f445017c9c8752c2f291649ca6b587dd0e)
    (7558ad39c47cde6d8d54cfb1f6ecfce5a7a33849)
  * Accept (ignore) renaming to current name in web UI
    (f945289f5d8d29ad57fa08a9ad66403839287817)
    (afe106a1d7277cc84d712c2946ed7416065ec3f6)
  * Return 503 Service Unavailable with an intelligible error
    instead of panicking on PUT errors
  * Display these in the web UI
    (41d6ff876d8edfb19f922afb307a7dff28f65f8a)
  * "confirm" (green tick) icon
    (45b68f2763a7aaa8deef39916f7013c3a16e846b)
  * Linked-to files in directory listing (like #asdf) highlighted
    (7338d066be7ec24903ea50aa0bc557696e1e0d11)
  * Mention of Debian repository in README
    (269dc9bfaa762f9aec49824c2da0d0297e102d98)

Internal:
  * Needless Borrow::borrow() call removed
    (1cf4b72e92bb312080ed00f17e80f761cf3c1f89)
    (report: roz@rozbrajacz.futbol)
  * Literalise mime types instead of parsing
    (c594ca321f9048b6913916c38465249c8fa326dd)
    (a81e456408f8f93039cb9b2bf94c0c9419d9a770)
    (c8c5ffbecf67de9222595aa8d24850d3c90ee1bb)
    (efdedcabf0e4e46d49dafd303d7bf96e5cd6d7c4)
    (7e4f7f6b2d623dd0cff84561f376ee7823eed839)
  * Don't check if temporary directory exists before trying to delete
    (a6292ca5a372b0f5a965c79adb33a19c2690d523)
  * Useless lazy_static and regex dependencies killed
    (1927f70751f840f2ee50521592e6d50ab01a1f6f)
    (76e9458927a2df70aa1b00e53eaf380038521ba0)
    (9e3e1cffff8f7ba38b1a94d61332d7cf4e4790bf)
    (07b1830f37e04189cfd3212b1bfef8d86b06a6c9)
    (a65b2721fddd246e78a34b5d9788cdc5d73ee811)
    (45b4a98bb35206f4ec186ae888d9760a145e0162)
  * Run-time parsing of do-not-encode list replaced with a codegenned function
    (also kills unicase)
    (8b1d70ba820f34eca5d87b0e1ddadbecef9eca24)
    (a4640612bad3571a122e1511ccc05296cabee76e)
  * Assets and indices are pre-parsed in build.rs before embedding
    (also kills base64 and lazysort) (+ initial whitespace trimmed from HTMLs)
    (b98242922188b3e53f3a8b9f39bffa6f9fb7ec24)
    (3ebfe11165d039097dd66ded17aa383327a509bd)
    (4f8ab9613befedae6572c9f8cd0eaef096774ce7)
    (a865809e5f19b3300289d177da1ea670abb4d140)
    (de4f880340241521d672e9f9058fcbb56bb44ec2)
    (5d1677dd8aad4dac7133fc0da992a43d777ff2f5)
    (91f11f33b57a3a8d8bf0eb2a7fcd4ed2d6a42903)
    (d944b46290d02e79729f09522bd4ae69d69d0908)
    (ca1e2c8fc96ceeecd21539b179b20a26b21f3bfc)
    (4d687dd3b97ce57e7b35870d75488414377c6f49)
    (930abd97b9e7c5e1712344f142f74f340ab84c4f)
  h Cache allowed methods instead of reallocating every time
    (9e75edb3d6f93d993922d7b32441953da612df72)
    (381597ab07b72638f546ca2499bc0212c8787c5c)
    (b2439b4bbd89411796679eb9deab367fb8d1b2a5)
    (d0318e7082f0456e48d703b85827bc06d29bf29c)
  * Vendored: iron 0.6.1 (with typemap, plugin, and log deps deleted)
    (e82274617b524c2576ee59188e628ad18433bf06)
    (4cfb89560ddcde018218e6c4702e1b4381bcdc19)
    (677c0079844ba07c2d0c09005eceab603b533afc)
  i Removed automatic annoying Content-Type muddling in iron
    (6b7cbd8367ef63b7bb081fd4d2ba577d2e8034a6)
    (22d887299a73d61346dc6d99b5b004744ff54602)
  * Static Ctrl-C handler Condvar
    (3037879c21600f8fa0e089f1f35810d73978183a)
    (501825be034ab982d19a13d0c60548c8fb798a3c)
  * Don't allocate URL path if not necessary, and escape it at most once
    (054d96c99ec02ec41c09fa9bb69a56b8dfb0ec40)
    (c5c7b25198738bd9e5badf57f1ce33bbf95faf7a)
    (cec73d91fd0b75d234d2a72777848ebdda0dd94d)
  * Vendored: hyper 0.10.16
    (with client component, some server body types,
     and log and env_logger dependencies deleted)
    (b7266380c12b18db84464f530b94897f0140c540)
    (a9bca0a183d8852d07dc903a0715ea51b4a19141)
    (5c99cea1ecad90d608ae297dc7909d33381332d9)
    (ee3343e121218e71b738bc2750fe118cabd063a7)
    (666a3ac4c8af1a6a48686fc64c000aa8c828c2b5)
    (d10bfe10d5ccc6b6e418f6beef47086ed6cdd685)
    (4dc92ee9f291a486fb3a0dd60c6b5544a4cda7ea)
    (a35e05098679956965a34e2cd9c22164b013eeb9)
    (0f7301e99a1520693924b8c0bc02e918d9cace31)
  h Hash encoded-data caches by Encoding(Type) directly instead of String repr;
    this also makes us stop distinguishing x-gzip from gzip
    (2659e7bc91e17fd9942ac6389eb75107c39eede5)
    (2d5023cc19108b8f5c3c9a99ea23681b154d0812)
  h Don't require reallocating Server header contents
    (248ea51ac0544a4dcab198823f2ffc52283341bb)
  h Don't require allocating RangeUnits in Accept-Ranges header
    (52d27962c0730ebbc741c2849e74239644826afd)
  h Use SmallVec for most common case of 1 Content-Encoding
    (49a56c4d748357d680d862bfd3a5f605be59dd0b)
  h Don't reallocate custom --header names
    (2aec32fc4a2dfafe616534934243f569e2b8c291)
    (c5e3ee42cfece5dd416c352bc5849e6e37fe2361)
  h Don't allocate for COPY/MKCOL/MOVE/PROPFIND/PROPPATCH/LOCK WebDAV requests
    (689fe43c23f89de405147702fcbae611472e96df)
  * Don't clone headers for TRACE
    (c78d921efd2799c65ab2246ac7fd508ae2b50839)
  h language-tags dependency removed
    (25ba25087fb5773e1f4a28e1eb12261fabd3e644)
  * .. + 1 => ..=
    (e3b93c297c633443ff84f27e3c67dd939150ad79)
  * os-str-generic dependency removed
    (6cc5a25d3d19d6b9beb4ddb746ba2377f98144b8)
    (754e8350586296529def90baac6b2f528cee2b1e)
  * Recompress rename icon (206 -> 192 bytes)
    (e677f0f6612ab3d176c0c3c6f70d6c67ea40ef8c)
  * Vendored: rfsapi 0.2.0
    (abc575abfc43c4e4fda2044c40e97fdeef7fde73)
    (41ae0f98728c567cda3f0b5d7105a1adc23210ba)
 ir Header parsing takes Cow<'static, [u8]> instead of Vec<u8>
    (b266e110f2b98f645dc1149aac9b14f6e50c11be)
  h Use VecMap as backing store for Header's PtrMap instead of HashMap
    (dcd24edaf4ff80a761c1acfacd126873d329f41a)
  * Free unused bits of Options
    (c7c30c602cc7f877ab22414518bf75f42ccb5a6e)
  * Don't allocate file length or 404 description as string
    (f7c818986ceeec57d39a582b28c69b4a0d663d86)
    (5f8517a59f46d651537667f86dfa591564ce40bc)
  * Assess file size once, from opened file, for opened ranges
    (f2477fbc7dc0ecef13daf4d20355fadaf12cf6a5)
  * Don't reallocate Range header value
    (39b22464b62aba7375a19a58eabc7951eeac238a)
  * Use the same buffer for recursive PROPFINDs
    (1643340a3dafebd0a8d0f89097c08552c395f0a8)
  * Produce address indents with {:w$} instead of Spaces(w) writing ' ' w times
    (dff8874afdfdc890adbec5e05239fd421aec71cb)
    (d48d06c377efca01b7040e206911e28391e5066d)
  * Don't allocate in AddressWriter
    (a23ede041c2fa4035ec39a0f6ba017060bee8dc4)
  * Don't allocate human-readable size
    (06263914eac42873dea3e31c3021fc7250f0d84a)
  * date.js replaced with standard JS Date manipulation
    (f710d873016fe06f64a798151c9e444d9b0a4851)
    (6cdc752f65afd04a7b9dc85b13d85bc438ce2c9b)
  * All document onload => DOMContentLoaded
    (6b69a1c59b2cf0186c3810d602a719c67e686479)
  * In a similar vein, move the click event listeners to onclick (perf)
    (f945289f5d8d29ad57fa08a9ad66403839287817)
    (f534ea446a1fe8dbf18d9678c562f3135359d5b9)
  * Don't reallocate each filename twice to replace & and < in index
    (d52b5d0fb04b8fb613158ae0d15ddf65d55e52e6)
  * Re-save embedded-in-EXE favicon.ico (15k -> 2k)
    (cf902c175ba61fb1f189f9e8fc0ac51baf9e3734)
  * Flatten Error to just be a String, instead of three with auto-ingification
  * Detect EADDRINUSE explicitly when trying new ports,
    rather than guessing from the I/O error stringification
    (fa101ba43256ef39e18bcd0b3e9968e31e0e6485)
  * Ignore RUSTSEC-2021-0145: we don't use a custom allocator
  * Ignore cargo-audit's "unmaintained" warnings
  * Ignore RUSTSEC-2020-0071: we do not setenv ever
  * Ignore RUSTSEC-2022-0022: our version of hyper never uses uninitialized()
    (25d01fd0661b340af245db79ec87f752c3b8a9e5)
    (d7a3d2cbd1b1e0283e531a0cbb677d76d46f65f4)
    (60f0726cef9e1c2f4ea4b9f8f91f0794b27736c7)
    (c5b49661f0499ddae92b2c820b421bfbe88e41b4)
    (#140)
  * Desktop directory listing simplified (inlined style, useless <div>)
    (daf471fdd37023467ba62270f1a96d2ce5e80c90)

i: affects vendored iron; h: affects vendored hyper; r: affects vendored rfsapi