Dendrite is a second-generation Matrix homeserver written in Go!
Go to file
Kiril Vladimiroff d5dbe546e4
Always defer *sql.Rows.Close and consult with Err (#844)
* Always defer *sql.Rows.Close and consult with Err

database/sql.Rows.Next() makes sure to call Close only after exhausting
result rows which would NOT happen when returning early from a bad Scan.
Close being idempotent makes it a great candidate to get always deferred
regardless of what happens later on the result set.

This change also makes sure call Err() after exhausting Next() and
propagate non-nil results from it as the documentation advises.

Closes #764

Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>

* Override named result parameters in last returns

Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>

* Do the same over new changes that got merged

Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2020-02-11 14:12:21 +00:00
.github Add SyTest support to CI (#704) 2019-05-24 15:00:03 +01:00
appservice Pass cfg by reference around the codebase (#819) 2020-02-11 11:18:12 +00:00
clientapi Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
cmd Wire up publicroomsapi for roomserver events (#851) 2020-01-24 17:11:20 +00:00
common Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
docker Implement room version capabilities in CS API (#866) 2020-02-05 18:06:39 +00:00
docs Adding sslmode: disable to sytest server config (#813) 2020-02-11 13:53:00 +00:00
federationapi Pass cfg by reference around the codebase (#819) 2020-02-11 11:18:12 +00:00
federationsender Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
hooks run commit hook on what we're committing (#356) 2017-11-27 12:19:04 +00:00
mediaapi Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
publicroomsapi Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
roomserver Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
scripts Move files back if linting fails (#810) 2019-12-25 18:14:58 +00:00
syncapi Always defer *sql.Rows.Close and consult with Err (#844) 2020-02-11 14:12:21 +00:00
typingserver Lots of small typo fixes (#737) 2019-07-12 16:43:01 +01:00
.editorconfig Add .editorconfig (#179) 2017-08-05 02:25:40 +01:00
.gitignore use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
.golangci.yml Fix pipeline, emoji and syntax (#713) 2019-06-19 14:05:03 +01:00
build.sh make cmd directory path absolute in build.sh (#830) 2020-01-09 13:36:39 +00:00
CODE_STYLE.md replaced gometalinter description with golangci-lint (#837) 2019-12-25 18:28:10 +00:00
CONTRIBUTING.md Update documentation for Go 1.13 (#867) 2020-02-06 11:54:26 +00:00
dendrite-config.yaml Remove riot.im from the list of trusted ID servers in the default config (#688) 2019-01-31 10:06:11 +00:00
DESIGN.md Clean up README a bit (#289) 2017-10-10 09:33:41 +01:00
go.mod Handle kind=guest query parameter on /register (#860) 2020-01-30 11:25:57 +00:00
go.sum Store our own keys in the keydb (#853) 2020-01-25 14:12:52 +00:00
INSTALL.md Update documentation for Go 1.13 (#867) 2020-02-06 11:54:26 +00:00
LICENSE Add Apache Version 2.0 license and headers to all golang files 2017-04-21 00:40:52 +02:00
README.md Update documentation for Go 1.13 (#867) 2020-02-06 11:54:26 +00:00
show-expected-fail-tests.sh Add a Sytest blacklist file (#849) 2020-01-22 13:31:22 +00:00
sytest-blacklist Implement missing device management features (#835) 2020-02-11 12:13:38 +00:00
sytest-whitelist Implement room version capabilities in CS API (#866) 2020-02-05 18:06:39 +00:00
WIRING.md Document internal APIs and Application Services component (#499) 2018-07-06 02:33:53 -07:00

Dendrite Build Status Dendrite Dev on Matrix Dendrite on Matrix

Dendrite will be a second-generation Matrix homeserver written in Go.

It's still very much a work in progress, but installation instructions can be found in INSTALL.md. It is not recommended to use Dendrite as a production homeserver at this time.

An overview of the design can be found in DESIGN.md.

Contributing

Everyone is welcome to help out and contribute! See CONTRIBUTING.md to get started!

Please note that, as of February 2020, Dendrite now only targets Go 1.13 or later. Please ensure that you are using at least Go 1.13 when developing for Dendrite.

Discussion

For questions about Dendrite we have a dedicated room on Matrix #dendrite:matrix.org. Development discussion should happen in #dendrite-dev:matrix.org.

Progress

There's plenty still to do to make Dendrite usable! We're tracking progress in a project board.