aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
41 hourslib/db: Correct function name in comments (#9520)HEADrelease-nightlymainluchenhan
41 hourslib/connections: Use proper errors.Is check (#9538)WangXi
41 hoursbuild(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0 (#9522)dependabot[bot]
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.42.0 to 0.43.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/quic-go/quic-go/releases">github.com/quic-go/quic-go's releases</a>.</em></p> <blockquote> <h2>v0.43.0</h2> <h2><em>quic-go.net</em>: Launching a new Documentation Site</h2> <p>With this release, we're launching a new documentation site for the quic-go projects (quic-go itself, HTTP/3, webtransport-go, and soon, masque-go): <a href="https://quic-go.net">quic-go.net</a>.</p> <p>The documentation site aims to explain QUIC concepts and how they are made accessible using quic-go's API. This site replaces the wiki, and the ever-growing README files.</p> <p>A lot of work has gone into the documentation already, but we're by no means done yet. The entire source is public in <a href="https://github.com/quic-go/docs/">https://github.com/quic-go/docs/</a>, and we're happy about community contributions.</p> <h2>HTTP Datagrams (RFC 9297)</h2> <p>This release adds support for HTTP Datagrams (<a href="https://datatracker.ietf.org/doc/html/rfc9297">RFC 9297</a>), both on the client and on the server side (<a href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>). HTTP Datagrams are used in WebTransport in CONNECT-UDP (<a href="https://datatracker.ietf.org/doc/html/rfc9298">RFC 9298</a>), among others.</p> <p>The new API for HTTP Datagrams is described on the new documentation page: <a href="https://quic-go.net/docs/http3/datagrams/">HTTP Datagrams</a>. The integration of HTTP Datagram support necessitated a comprehensive refactor of the HTTP/3 package, resulting in several breaking API changes listed below.</p> <h2>Breaking Changes</h2> <ul> <li>quicvarint: functions now return an <code>int</code> instead the internal <code>protocol.ByteCount</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4365">#4365</a>)</li> <li>http3: <code>Server.SetQuicHeaders</code> was renamed to <code>SetQUICHeaders</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4377">#4377</a>)</li> <li>http3: <code>Server.QuicConfig</code> was renamed to <code>QUICConfig</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4384">#4384</a>)</li> <li>http3: <code>RoundTripper.QuicConfig</code> was renamed to <code>QUICConfig</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4385">#4385</a>)</li> <li>http3: <code>RoundTripOpt.CheckSettings</code> was removed (<a href="https://redirect.github.com/quic-go/quic-go/issues/4416">#4416</a>). Use the new<code>SingleDestinationRoundTripper</code> API instead.</li> <li>http3: the <code>HTTPStreamer</code> interface is now implemented by the <code>http.ResponseWriter</code> (and not the <code>http.Request.Body</code>) (<a href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li> <li>include the maximum payload size in the <code>DatagramTooLargeError</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li> </ul> <h2>Other Notable Changes</h2> <ul> <li>GSO and ECN is disabled on kernel versions older than 5 (<a href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li> <li>http3: logging can be controlled using an <code>slog.Logger</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4449">#4449</a>)</li> <li>http3: HEAD requests can now be sent in 0-RTT (<a href="https://redirect.github.com/quic-go/quic-go/issues/4378">#4378</a>)</li> <li>http3: duplicate QPACK encoder and decoder streams are not rejected as required by the RFC (<a href="https://redirect.github.com/quic-go/quic-go/issues/4388">#4388</a>)</li> <li>http3: Extended CONNECT are blocked until the server's SETTINGS are received, as required by the RFC (<a href="https://redirect.github.com/quic-go/quic-go/issues/4450">#4450</a>)</li> <li>http3: HTTP/3 client connections aren't removed if <code>RoundTrip</code> errors due to a cancelled context (<a href="https://redirect.github.com/quic-go/quic-go/issues/4448">#4448</a>). Thanks to <a href="https://github.com/GeorgeMac"><code>@​GeorgeMac</code></a>!</li> <li>http3: sniff Content-Type when flushing the ResponseWriter (<a href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>). Thanks to <a href="https://github.com/WeidiDeng"><code>@​WeidiDeng</code></a>!</li> <li>The <code>Context</code> exposed on the <code>quic.Stream</code> is now derived from the connection's context (<a href="https://redirect.github.com/quic-go/quic-go/issues/4414">#4414</a>)</li> <li>The UDP send and receive buffer size was increased to 7 MiB (<a href="https://redirect.github.com/quic-go/quic-go/issues/4455">#4455</a>). Thanks to <a href="https://github.com/bt90"><code>@​bt90</code></a>!</li> </ul> <h2>Clarifications on the QUIC Stream State Machine</h2> <h3>Calling CancelWrite after Close</h3> <p>After a long and fruitful discussion (<a href="https://redirect.github.com/quic-go/quic-go/issues/4404">#4404</a>), we decided to clarify that calling <code>CancelWrite</code> after <code>Close</code> on a <code>SendStream</code> (or a bidirectional stream) should cause a state transition from the &quot;Data Sent&quot; to the &quot;Reset Sent&quot; state, as described in <a href="https://datatracker.ietf.org/doc/html/rfc9000#section-3.1">section 3.1 of RFC 9000</a>. This matches the current behavior of quic-go, however, it didn't match the API documentation (fixed in <a href="https://redirect.github.com/quic-go/quic-go/issues/4419">#4419</a>).</p> <p>This means that stream data will not be delivered reliably if <code>CancelWrite</code> is called, and that this applies even if <code>Close</code> was called before.</p> <h3>Garbage Collection of Streams</h3> <p>This release also changes the way streams are garbage-collected (and the peer is granted additional limit to open a new stream), once they're not needed anymore, in a subtle way:</p> <ul> <li>for the send direction of streams: <a href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/quic-go/quic-go/commit/93c4785521c0622e7c4e04d681404f1c802e18c4"><code>93c4785</code></a> http3: sniff Content-Type when flushing the ResponseWriter (<a href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/c0250ce82459ebdc60cc95c39dffed7ee0c0ec6b"><code>c0250ce</code></a> include the maximum payload size in the DatagramTooLargeError (<a href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/34f4d1443f97c3b09e34023cbb912a8a803829a6"><code>34f4d14</code></a> http3: implement on the HTTPStreamer on the ResponseWriter, flush header (<a href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/083ceb42f29c7d25d86e221e5a7a22eb6af1c006"><code>083ceb4</code></a> http3: rename Settings.EnableDatagram to EnableDatagrams (<a href="https://redirect.github.com/quic-go/quic-go/issues/4466">#4466</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/e1e5b6294d2cca73f0664f879889780cfa2ae51d"><code>e1e5b62</code></a> README: link to the new documentation site (<a href="https://redirect.github.com/quic-go/quic-go/issues/4464">#4464</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/2a37c531438f0d1512f39be9c768c363389be1ae"><code>2a37c53</code></a> http3: add support for HTTP Datagrams (RFC 9297) (<a href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/11b11594b249517098aeabfebb3797e85719dd25"><code>11b1159</code></a> http3: fix race condition in client unit test (<a href="https://redirect.github.com/quic-go/quic-go/issues/4463">#4463</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/4b87539b1efd2ffd05996fb2b9a7519a9cdb9cd2"><code>4b87539</code></a> delay completion of the receive stream until the reset error was read (<a href="https://redirect.github.com/quic-go/quic-go/issues/4460">#4460</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/bff131e546ad5861fa1ae77766776d08bec9f3bc"><code>bff131e</code></a> delay completion of the send stream until the reset error was delivered (<a href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/12aa63824c7f91d7925bfc0bdb78ae0ad942b3bf"><code>12aa638</code></a> disable GSO and ECN on kernels older than version 5 (<a href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li> <li>Additional commits viewable in <a href="https://github.com/quic-go/quic-go/compare/v0.42.0...v0.43.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/quic-go/quic-go&package-manager=go_modules&previous-version=0.42.0&new-version=0.43.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5 daysgui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
10 daysbuild: Use Go 1.22.3 at minimumJakob Borg
11 daysgui: Add Hindi (hi) translation template (#9530)André Colomb
Based on user request from Weblate, user @Scrambled777. Looks promising based on the profile: https://hosted.weblate.org/user/Scrambled777/
12 daysgui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
13 dayslib/connections: Add syncthing_connections_active metric (fixes #9527) (#9528)DerRockWolf
### Purpose Adds a new metric `syncthing_connections_active` which equals to the amount of active connections per device. Fixes #9527 <!-- Describe the purpose of this change. If there is an existing issue that is resolved by this pull request, ensure that the commit subject is on the form `Some short description (fixes #1234)` where 1234 is the issue number. --> ### Testing I've manually tested it by running syncthing with these changes locally and examining the returned metrics from `/metrics`. I've done the following things: - Connect & disconnect a device - Increase & decrease the number of connections and verify that the value of the metric matches with the amount displayed in the GUI. ### Documentation https://github.com/syncthing/docs/blob/main/includes/metrics-list.rst needs to be regenerated with [find-metrics.go](https://github.com/syncthing/docs/blob/main/_script/find-metrics/find-metrics.go) ## Authorship Your name and email will be added automatically to the AUTHORS file based on the commit metadata. --------- Co-authored-by: Jakob Borg <jakob@kastelo.net>
2024-05-01etc: Use 7MiB buffer size (#9524)otbutz
### Purpose In preparation for quic-go v0.43.0. see https://github.com/quic-go/quic-go/pull/4455
2024-05-01gui: Fix Firefox bookmark favicon (fixes #9506) (#9507)Severin von Wnuck-Lipinski
### Purpose Firefox uses the last specified favicon link for bookmarks, but only if it is available on initial page load. Remove the second link and use ng-href to change the icon instead. I'm not really familiar with AngularJS, feel free to offer suggestions for improvements. ### Testing Briefly tested on Firefox 124.0.2 and Chrome 123.0.6312.105.
2024-04-29gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-04-22gui, man, authors: Update docs, translations, and contributorsv1.27.7-rc.1Syncthing Release Automation
2024-04-15gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-04-11lib/nat: Don't crash on empty address list (fixes #9503) (#9504)Jakob Borg
2024-04-08lib/db: Drop indexes for outgoing data to force refresh (ref #9496) (#9502)v1.27.6-rc.2v1.27.6Jakob Borg
### Purpose Resend our indexes since we fixed that index-sending issue. I made a new thing to only drop the non-local-device index IDs, i.e., those for other devices. This means we will see a mismatch and resend all indexes, but they will not. This is somewhat cleaner as it avoids resending everything twice when two devices are upgraded, and in any case, we have no reason to force a resend of incoming indexes here. ### Testing It happens on my computer...
2024-04-07gui: Fix missing link to device editor for names with superscript (ref ↵tomasz1986
#9472) (#9494) The commit 7e4e65ebf53dd98f0fee3f021c399b12f5966f12 added links to devices listed in the Shared With list in the folder info. However, it only added them to those that had no superscript next to them. With this change, the links are added to all devices regardless of whether they have the superscript next to their names or not. The commit also simplifies the code by using anchors directly instead of wrapping them in spans. Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>
2024-04-05lib/db: Hold update lock while taking snapshot (#9496)v1.27.6-rc.1Jakob Borg
2024-04-05build: Update dependencies (#9497)Jakob Borg
2024-04-01gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-03-25gui, man, authors: Update docs, translations, and contributorsv1.27.5-rc.2v1.27.5Syncthing Release Automation
2024-03-23Removed no longer relevant Bountysource link (#9480)Tim Nordenfur
### Purpose Bountysource no longer exists and the readme link 404s. This removes the Bountysource link and corresponding readme section. Perhaps the section should instead be replaced by other instructions for voting on features.
2024-03-21lib/api: Missing return after HTTP errorJakob Borg
2024-03-21lib/api: Extract session store (#9425)Emil Lundberg
This is an extract from PR #9175, which can be reviewed in isolation to reduce the volume of changes to review all at once in #9175. There are about to be several services and API handlers that read and set cookies and session state, so this abstraction will prove helpful. In particular a motivating cause for this is that with the current architecture in PR #9175, in `api.go` the [`webauthnService` needs to access the session](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dR309-R310) for authentication purposes but needs to be instantiated before the `configMuxBuilder` for config purposes, because the WebAuthn additions to config management need to perform WebAuthn registration ceremonies, but currently the session management is embedded in the `basicAuthAndSessionMiddleware` which is [instantiated much later](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dL371-R380) and only if authentication is enabled in `guiCfg`. This refactorization extracts the session management out from `basicAuthAndSessionMiddleware` so that `basicAuthAndSessionMiddleware` and `webauthnService` can both use the same shared session management service to perform session management logic. ### Testing This is a refactorization intended to not change any externally observable behaviour, so existing tests (e.g., `api_auth_test.go`) should cover this where appropriate. I have manually verified that: - Appending `+ "foo"` to the cookie name in `createSession` causes `TestHtmlFormLogin/invalid_URL_returns_403_before_auth_and_404_after_auth` and `TestHtmlFormLogin/UTF-8_auth_works` to fail - Inverting the return value of `hasValidSession` cases a whole bunch of tests in `TestHTTPLogin` and `TestHtmlFormLogin` to fail - (Fixed) Changing the cookie to `MaxAge: 1000` in `destroySession` does NOT cause any tests to fail! - Added tests `TestHtmlFormLogin/Logout_removes_the_session_cookie`, `TestHTTPLogin/*/Logout_removes_the_session_cookie`, `TestHtmlFormLogin/Session_cookie_is_invalid_after_logout` and `TestHTTPLogin/200_path#01/Session_cookie_is_invalid_after_logout` to cover this. - Manually verified that these tests pass both before and after the changes in this PR, and that changing the cookie to `MaxAge: 1000` or not calling `m.tokens.Delete(cookie.Value)` in `destroySession` makes the respective pair of tests fail.
2024-03-18gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-03-17gui: Open devices on click in Shared With list in folder info (fixes #8972) ↵Jaspitta
(#9472)
2024-03-11lib/model: Don't bump seq on error in index handler (#9459)v1.27.5-rc.1Simon Frei
2024-03-10lib/model: Prevent infinite index sending loop (fixes #9407) (#9458)Simon Frei
Explanation of what/why in a code comment. Fixes https://github.com/syncthing/syncthing/issues/9407
2024-03-05lib/scanner: Fix ticker leak in scanner (fixes #9417) (#9451)Simon Frei
Move the ticker closer to where it's used and defer stop it to avoid missing a branch. Fixes regression introduced in https://github.com/syncthing/syncthing/commit/2f3eacdb6c1c33650ccdd91f42e842c116200d92 Fixes https://github.com/syncthing/syncthing/issues/9417
2024-03-04build: Update dependencies (#9448)Jakob Borg
2024-03-04gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-03-03gui: Show encryption status for devices sharing folder (ref #8808) (#9355)André Colomb
This re-implements the stalled enhancement from #8808. Thanks @Craeckie for the idea and first implementation draft! If a folder is shared to a device with encryption, add a lock icon in front of the device name under "Shared With" in the folder details panel. Be careful not to add whitespace caused by line wraps in HTML source code, which would defeat the purpose of keeping the icon glued to the name by a non-breaking space. Apply the same lock icon for the list of folders shared with a device.
2024-03-03gui: Fix wrapping in "Shared With" / "Folders" lists. (#9438)André Colomb
This change was split off from #9355 as an independent clean-up / fix. See that PR for review discussion, testing, and screenshots. Improve the wrapping of folder labels / device names by going back to word-wrapping, but making sure other spans, such as the trailing comma, do not get separated from the label span. * Avoid adding whitespace caused by line wraps in HTML source code. The different cases within the ng-switch block are separated by newlines for readability, but that gets parsed as whitespace. For wrapping purposes, this should not happen, because then there is no way to keep other HTML parts glued to the name / label in each list entry. * Simplify redundant conditional comma code. The separating comma after a device name or folder label (all but the last) should always stick to it. Use the HTML comment trick to avoid whitespace and therefore a wrapping opportunity caused by the code formatting newline. Thus the conditional comma only needs to be defined once, not in each ng-switch case. * Wrap at word boundaries and only break up words if necessary. Use the overflow-wrap: break-word; style instead of word-break: break-all;. While the latter is suitable for longish paths, breaking device names or folder labels arbitrarily within words is ugly. This also makes the the <sup> numbers actually stay glued to their respective neighboring words. Include legacy CSS alias "word-wrap" in the class definition. * Fix indentation (unrelated).
2024-03-02github: Convert issue templates into forms (fixes #9442)Jakob Borg
2024-03-02lib/model: Ignore difference in extended attributes & ownership when ↵Luke Hamburg
deleting (fixes #9371) (#9430) Adds a bool flag to `scanIfItemChanged()` to indicate when the scan was initiated from a delete function, and if so, tell `IsEquivalentOptional()` to ignore Xattrs and Ownership regardless of the global setting. I tested this with my sledgehammer and it seems to pass.
2024-02-27all: Use own automaxprocs package that doesn't log (ref #9436) (#9437)v1.27.4-rc.2v1.27.4Jakob Borg
### Purpose 🤫
2024-02-26all: Use Linux container CPU quota (fixes #9357, fixes #9435) (#9436)Thomas
Go is not cgroup aware and by default will set GOMAXPROCS to the number of available threads, regardless of whether it is within the allocated quota. This behaviour causes high amount of CPU throttling and degraded application performance.
2024-02-26cmd/syncthing: Remove legacy GOMAXPROCS handling (ref #9436)Jakob Borg
2024-02-26gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-02-22docker: Add support for setting umask (#9429)Beat Reichenbach
Add support for setting umask value in the Docker `entrypoint.sh` script. This is useful when not syncing permissions and working with groups, and needing umask values like `002` instead of `022`.
2024-02-19gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-02-12gui, man, authors: Update docs, translations, and contributorsv1.27.4-rc.1Syncthing Release Automation
2024-02-11build: Use correct Go version also for script runs (#9414)Jakob Borg
The changes to go.mod in latest Go 1.21/1.22 are not fully understood by older Go that might be pre-installed on builds, so make sure we always have a modern one in place even for running small release scripts etc.
2024-02-11lib/api: Deflake TestAPIServiceRequests (#9413)Jakob Borg
Somewhere along the way, the non-parallel test became parallel, and at that point, timeouts occurred. Parallel is better, so increase the timeout on the offending call a bit...
2024-02-11lib/model: Deflake new IndexHandlerTest (#9412)Jakob Borg
The new test has a flakiness factor on slow platforms, where the close on the sending connection races with the last index message, potentially messing up the count. This adds a wait to ensure that all sent messages are received, or the test will eventually fail with a timeout.
2024-02-10all: Use some Go 1.21 features (#9409)Jakob Borg
2024-02-10lib/model, lib/protocol: Remove FileInfoBatch reuse behavior (#9399)Jakob Borg
2024-02-09build: Use Go 1.22, minimum is Go 1.21 (#9408)Jakob Borg
Also updated dependencies, and an adjustment to build tags for how those are handled and how irrelevant go1.15 is nowadays...
2024-02-09lib/logger: Reduce API surface (#9404)Jakob Borg
There is no need to expose the IsTraced() thing; it's just used in initialisation, and thereafter ShouldDebug() is the corresponding correct call.
2024-02-06lib/logger: Split STTRACE into list of strings (#9402)gudvinr
Currently `IsTraced("xyz")` will return true for any inclusion of "xyz" in string. This change splits `STTRACE` using `','`, `' '` and `';'` as delimiters. That makes facilities separation more clear.
2024-02-05gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation