summaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2020-05-16lib/model: Fix rename handling (ref #6650) (#6652)v1.6.0-rc.3Audrius Butkevicius
2020-05-16lib/db: Filter repeat files in one update (ref #6650) (#6651)Simon Frei
2020-05-13lib/db: Dont add symlinks to blocks map (fixes #6637) (#6639)v1.6.0-rc.2Simon Frei
2020-05-11lib/model: Add support for different puller block ordering (#6587)v1.6.0-rc.1Audrius Butkevicius
* WIP * Tests * Header and format * WIP * Fix tests * Goland you disappoint me * Remove CC storage * Update blockpullreorderer.go
2020-05-11all: Reorder sequences for better rename detection (#6574)Audrius Butkevicius
2020-05-11lib/db, lib/model: Keep need stats in metadata (ref #5899) (#6413)Simon Frei
2020-05-11lib/connections: React to listeners going up and down faster (#6590)Audrius Butkevicius
2020-05-11build: Update .gitignores for new asset locs (ref #6624) (#6631)Simon Frei
2020-05-10cmd/strelaypoolsrv, lib/api: Factor out static asset serving (#6624)greatroar
2020-05-08lib/db: Fix non-truncated fileinfo loading (#6621)Audrius Butkevicius
2020-05-08lib/model: Prevent panic on test failure (ref #6618) (#6620)Simon Frei
2020-05-08lib/db: Hold the bloom filter the right way (fixes #6614) (#6617)Jakob Borg
2020-05-07all: Store assets as strings (#6611)greatroar
Storing assets as []byte requires every compiled-in asset to be copied into writable memory at program startup. That currently takes up 1.6MB per syncthing process. Strings stay in the RODATA section and should be shared between processes running the same binary.
2020-05-07lib/model: Spurious tmp file (ref #6607) (#6609)Simon Frei
2020-05-06lib/model: Fix test after version vector changes (#6607)Jakob Borg
2020-05-06lib/protocol: Avoid data loss on database wipe by higher version numbers ↵Jakob Borg
(fixes #3876) (#6605) This makes version vector values clock based instead of just incremented from zero. The effect is that a vector that is created from scratch (after database reset) will have a higher value for the local device than what it could have been previously, causing a conflict. That is, if we are A and we had {A: 42, B: 12} in the old scheme, a reset and rescan would give us {A: 1} which is a strict ancestor of the older file (this might be wrong). With the new scheme we would instead have {A: someClockTime, b: otherClockTime} and the new version after reset would become {A: someClockTime+delta} which is in conflict with the previous entry (better). In case the clocks are wrong (current time is less than the value in the vector) we fall back to just simple increment like today. This scheme is ineffective if we suffer a database reset while at the same time setting the clock back far into the past. It's however no worse than what we already do. This loses the ability to emit the "added" event, as we can't look for the magic 1 entry any more. That event was however already broken (#5541). Another place where we infer meaning from the vector itself is in receive only folders, but there the only criteria is that the vector is one item long and includes just ourselves, which remains the case with this change. * wip
2020-05-06lib/model: Merge add and start folder funcs and related refactor (#6594)Simon Frei
2020-05-04lib/model: Don't include iolimiter wait into sync duration (#6593)Simon Frei
2020-05-01lib/model: Improve errors when deleting dirs (fixes #6575) (#6586)Simon Frei
2020-05-01lib/model: Do file recheck in folder loop (fixes #6583) (#6585)Audrius Butkevicius
2020-05-01lib/model: Progress emitter network operations dont need to be blocking (#6589)Audrius Butkevicius
* lib/model: Progress emitter network operations dont need to be blocking * Do sends outside of the lock
2020-05-01lib/model: Add option to disable fsync (#6588)Audrius Butkevicius
* lib/model: Add option to disable fsync * Fix test * Dont open stuff for no reason
2020-05-01lib/db: Refactor getting global lists (#6529)Simon Frei
* lib/db: Refactor getting global lists * VL -> Versions * keyBuf * don't touch db migration
2020-05-01lib/connections: Update quic (#6591)Audrius Butkevicius
* lib/connections: Update quic * Fix freebsd builds? * Undo x/sys and gopsutil update * Update quic_dial.go * Update quic_listen.go
2020-04-28lib/fs: Avoid dirty offset read in fakefs (fixes #6584)Jakob Borg
2020-04-27lib/config: Sort versioning options on marshal (fixes #6576) (#6577)Jakob Borg
2020-04-27lib/model: Use semaphore to limit concurrent folder writes (fixes #6541) (#6573)Jakob Borg
2020-04-21 lib/model: Don't exit pullerRoutine on cancelled ctx (fixes #6559) (#6562)Simon Frei
* lib/model: Don't exit pullerRoutine on cancelled ctx (fixes #6559) * actual fix
2020-04-21lib/model: Refactor folder health/error handling (fixes #6557) (#6558)Simon Frei
2020-04-20lib/protocol, rc, utils: Add mutex Unlock before panic (#6556)Boqin Qin
2020-04-20lib/db: Upgrade to Blobloom v0.1.1 (#6553)greatroar
Now faster and Apache-licensed.
2020-04-20lib/db: Switch to faster blobloom Bloom filter pkg (#6537)greatroar
2020-04-20lib/connections: Accept new connections in place of old ones (fixes #5224) ↵MikolajTwarog
(#6548)
2020-04-17lib/model: Delay watch setup on errors (fixes #5731) (#6544)Simon Frei
2020-04-16lib/model: Fix logging placeholderJakob Borg
2020-04-16build, lib/build: Build faster (#6538)Jakob Borg
This changes the build script to build all the things in one go invocation, instead of one invocation per cmd. This is a lot faster because it means more things get compiled concurrently. It's especially a lot faster when things *don't* need to be rebuilt, possibly because it only needs to build the dependency map and such once instead of once per binary. In order for this to work we need to be able to pass the same ldflags to all the binaries. This means we can't set the program name with an ldflag. When it needs to rebuild everything (go clean -cache): ( ./old-build -gocmd go1.14.2 build all 2> /dev/null; ) 65.82s user 11.28s system 574% cpu 13.409 total ( ./new-build -gocmd go1.14.2 build all 2> /dev/null; ) 63.26s user 7.12s system 1220% cpu 5.766 total On a subsequent run (nothing to build, just link the binaries): ( ./old-build -gocmd go1.14.2 build all 2> /dev/null; ) 26.58s user 7.53s system 582% cpu 5.853 total ( ./new-build -gocmd go1.14.2 build all 2> /dev/null; ) 18.66s user 2.45s system 1090% cpu 1.935 total
2020-04-14lib/model: Harden sanitizePath (#6533)greatroar
In particular, non-printable runes and non-UTF8 sequences are no longer allowed. Linux systems will happily creates filenames containing these.
2020-04-14lib/db: Remove unused blockFinder global (#6534)greatroar
2020-04-13lib/db: Handle missed error variable in old schema upgrade (#6528)Simon Frei
2020-04-13cmd/syncthing, lib/db: Store upgrade info to throttle queries (fixes #6513) ↵v1.5.0-rc.1Simon Frei
(#6514)
2020-04-12lib/db: Make database GC a service, stop on Stop() (#6518)Jakob Borg
This makes the GC runner a service that will stop fairly quickly when told to. As a bonus, STTRACE=app will print the service tree on the way out, including any errors they've flagged.
2020-04-07lib/osutil: Fix "atomic" rename on Windows (ref #6495, ref #6493) (#6510)Jakob Borg
So, in a funny plot twist, it turns out that WriteFile in Go 1.13 doesn't actually set the read only bit on Windows when called with permissions 0444 so my test was broken. With an improved test it turns out that Rename does not, in fact, overwrite a read-only file on Windows. This adds a fix for that. (Rename might get improved in Go 1.15...)
2020-04-07lib/db: Don't get blocklists on drop and missing continue (ref #6457) (#6502)Simon Frei
2020-04-07lib/ignore: Only skip for toplevel includes (fixes #6487) (#6508)Simon Frei
2020-04-07lib/{fs,scanner}: gofmt from Go 1.14 (#6509)Jakob Borg
2020-04-06lib/ur: Correct freaky error handling (fixes #6499) (#6500)Jakob Borg
2020-04-04lib/osutil: Don't remove before rename on Windows (ref #6493) (#6495)Jakob Borg
This was needed in ancient times but not currently.
2020-04-04cmd/strelaypoolsrv: Expose check error to client, fix incorrect response ↵Jakob Borg
code handling
2020-04-04lib/api: Add LDAP search filters (fixes #5376) (#6488)Jakob Borg
This adds the functionality to run a user search with a filter for LDAP authentication. The search is done after successful bind, as the binding user. The typical use case is to limit authentication to users who are member of a group or under a certain OU. For example, to only match users in the "Syncthing" group in otherwise default Active Directory set up for example.com: <searchBaseDN>CN=Users,DC=example,DC=com</searchBaseDN> <searchFilter>(&amp;(sAMAccountName=%s)(memberOf=CN=Syncthing,CN=Users,DC=example,DC=com))</searchFilter> The search filter is an "and" of two criteria (with the ampersand being XML quoted), - "(sAMAccountName=%s)" matches the user logging in - "(memberOf=CN=Syncthing,CN=Users,DC=example,DC=com)" matches members of the group in question. Authentication will only proceed if the search filter matches precisely one user.
2020-04-02lib/model: Handle deleted items on RO for remote removes (fixes #6432) (#6464)Simon Frei