Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V2 #426

Open
wants to merge 363 commits into
base: master
Choose a base branch
from
Open

V2 #426

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
363 commits
Select commit Hold shift + click to select a range
6b6fb29
Fixed typo.
nkatsaros Dec 5, 2014
c50bc8e
Don't use cluster.err
deafgoat Dec 10, 2014
dcf26a2
Check live servers are correct
deafgoat Dec 15, 2014
84603f4
Remove extraneous server check
deafgoat Dec 15, 2014
e0d7e59
Improve ReplicaSetName field doc, drop dup tests
niemeyer Dec 16, 2014
f8aa918
Do not acquire sockets with iter.m locked.
niemeyer Dec 17, 2014
c064533
testdb: make dropall.js resilient to "not master"
niemeyer Dec 21, 2014
5463a0a
Fix ErrNotFound bug just introduced on Iter change.
niemeyer Dec 21, 2014
513c45d
Trivial test fixes for 2.8.0-rc3.
niemeyer Dec 21, 2014
baa44ca
Add Collection.NewIter method.
niemeyer Dec 21, 2014
bbabc25
Support cursors on listIndexes and listCollections.
niemeyer Dec 21, 2014
6bc18a8
More tweaks and tests for NewIter.
niemeyer Dec 22, 2014
c735aed
Use cloned session properly in CollectionNames.
niemeyer Dec 31, 2014
7d75669
Fixed small documentation typo on GridFs.Create
m3talsmith Jan 5, 2015
a1a4f31
Merge pull request #53 from nkatsaros/v2
niemeyer Jan 9, 2015
445c05a
Merge pull request #59 from m3talsmith/v2
niemeyer Jan 9, 2015
d901aa6
Import mgo.v2 from the unstable branch.
niemeyer Jan 13, 2015
fbdf8c9
Only look at public fields on omitempty in structs.
niemeyer Jan 20, 2015
a6441a7
More improvements around NewIter.
niemeyer Jan 20, 2015
70863c4
Error kindly on no server in NewIter.
niemeyer Jan 21, 2015
fce0aed
Another test for the prior NewIter change.
niemeyer Jan 21, 2015
0e93d4b
Support weighting of text index fields.
niemeyer Jan 21, 2015
2b90f35
Respect a non-empty mgo.Index.Name on EnsureIndex.
niemeyer Jan 22, 2015
565a538
Drop support for custom index name on EnsureIndex.
niemeyer Jan 22, 2015
a581209
Fix support for special $** text index field name.
niemeyer Jan 22, 2015
ff4340b
Remove GridFS chunks if file doc insertion fails.
niemeyer Jan 22, 2015
1407fa3
Unmarshal null and "" in JSON as empty ObjectId.
niemeyer Jan 22, 2015
5070508
Merge branch 'v2-unstable' into v2.
niemeyer Jan 24, 2015
c6a7dce
Preparing release of v2 r2015.01.24.
niemeyer Jan 24, 2015
13ee89b
Support createIndexes command in EnsureIndex.
niemeyer Feb 26, 2015
40757bb
Fix index tests for 2.0.
niemeyer Feb 26, 2015
2a8c893
Specialize Database.Run logic as Database.run.
niemeyer Mar 16, 2015
5ee5ca2
Adding support for $maxTimeMS on queries
Mar 20, 2015
5bc2d3e
Use insert/update/delete commands on 2.6+
niemeyer Mar 26, 2015
9eef06d
Adjust stats for master connection only once.
Mar 28, 2015
647f288
Tune doc for Distinct.
niemeyer Mar 30, 2015
994ffac
Also check unknown command error codes.
niemeyer Mar 30, 2015
7a49434
Handle Setter and Getter interfaces in slice types.
niemeyer Mar 30, 2015
d7cb126
add support for geoHaystack index
deiwin Apr 6, 2015
0257d5e
Split bulk insert operations to stay under limit.
niemeyer Apr 9, 2015
2353652
Handle unordered batch splitting with commands.
niemeyer May 8, 2015
8483120
Merge branch max-time-ms from minyoung/mgo.
niemeyer May 11, 2015
00f3f63
Twist SetMaxTime to follow conventions.
niemeyer May 11, 2015
95431c8
Expose ParseURL.
niemeyer May 11, 2015
d1766da
Merge v2-unstable from deiwin/mgo.
niemeyer May 11, 2015
b9cc139
Merge v2-unstable from dmage/mgo.
niemeyer May 11, 2015
b62503f
Check for iteration errors in PurgeMissing
May 11, 2015
9aad82c
Remove unused `coll` map from PurgeMissing
May 11, 2015
541cb7b
Fixed spelling error in TestPurgeMissing
May 11, 2015
e5d775a
Actually use `again` id in TestPurgeMissing
May 11, 2015
d3bbedd
Merge purgemissing-misc-fixes from https://github.com/mjs/mgo.
niemeyer May 11, 2015
88e8c10
Move sasl sub-package into internal/.
niemeyer May 12, 2015
4e47911
Add support for $comment flag with Query.Comment.
niemeyer May 13, 2015
446b41d
rescan now retries bad queue reads
fwereade May 22, 2015
3d69d7d
Added testserver subpackage to help test suites.
niemeyer May 22, 2015
a59b2e8
Merge retry-rescan-queue from fwereade/mgo.
niemeyer May 25, 2015
ebd6a8e
Fix EnsureIndex test result: bucketSize int => f32
niemeyer May 25, 2015
a5d6cbf
Fix serious sync breakage sneaked in PR#83/b9cc139
niemeyer May 25, 2015
1b35c4c
Support encoding byte arrays in structs
tchajed May 26, 2015
e1e5be4
Minor doc improvement.
niemeyer May 29, 2015
7c85a0d
Merge v2-unstable into v2.
niemeyer May 29, 2015
25b7543
Only enable write commands on wire >= 3 for now.
niemeyer May 29, 2015
90e509a
Fix test expecting GLE not to be sent on 2.6.
niemeyer May 29, 2015
01ee097
Merge v2-unstable into v2.
niemeyer May 29, 2015
e4a8adf
Avoid MongoDB pipeline size limit in PurgeMissing
May 11, 2015
8466119
Fix LastError.UpdatedExisting on 3.0+.
niemeyer Jun 3, 2015
3f8090a
Merge v2-unstable into v2.
niemeyer Jun 3, 2015
5ef2402
Rename testserver as dbtest in compatible way.
niemeyer Jun 4, 2015
e847757
Rename testserver as dbtest in compatible way.
niemeyer Jun 4, 2015
3569c88
dbtest: mgo.v2-unstable => mgo.v2
niemeyer Jun 4, 2015
19dcc4f
Report document corruption on negative lengths.
niemeyer Jun 12, 2015
33508a2
Do not marshal broken empty Raw documents.
niemeyer Jun 12, 2015
7d0c329
Test proper omitempty handling for Raw.
niemeyer Jun 12, 2015
89d0282
Ignore BSON array if being unmarshaled into RawD.
niemeyer Jun 13, 2015
9e7209e
Cleaner test cases for negative string lengths.
niemeyer Jun 13, 2015
85f82c5
Import BSON tests from Jeff's spec.
niemeyer Jul 15, 2015
162b080
MGO-64: GridFS completeWrite doesn't create unique index
deafgoat Jul 20, 2015
242fb0d
Add missing documentation for Dial
rychipman Jul 23, 2015
b61a0f9
Add newline for consistent spacing in Dial godoc
rychipman Jul 23, 2015
4c77884
Reduce excessive timeout delay on initial dial.
niemeyer Jul 30, 2015
dcc66e8
make the mode type public
Aug 17, 2015
75bbbc6
Initial support for bulk updates.
niemeyer Aug 19, 2015
c84ec50
IsDup now works on bulkError.
niemeyer Aug 19, 2015
159b618
update documentation to io.EOF instead of os.EOF
josler Aug 21, 2015
f4923a5
Resolve IPv4 addresses only for now.
niemeyer Aug 21, 2015
70655d4
Merge pull request #151 from gabrielrussell/mode-Mode
niemeyer Aug 21, 2015
d650c4e
Resolve IPv4 addresses only for now.
niemeyer Aug 21, 2015
f753851
Merge pull request #154 from josler/jo/fix-tiny-doc-error
niemeyer Aug 21, 2015
e6cf61d
Allow decoding plain BSON binary into Binary.
niemeyer Aug 25, 2015
d1c150d
Improvements in the bulk operations implementation.
niemeyer Aug 28, 2015
22287ba
Support explicit IPv6 address dialing.
niemeyer Sep 2, 2015
93b17aa
Support explicit IPv6 address dialing.
niemeyer Sep 2, 2015
5df5953
Add bulk upsert method.
niemeyer Sep 8, 2015
2e755e4
Enable write commands on 2.6+ (wire version 2+).
niemeyer Sep 8, 2015
8b93a9f
Added Matched and Modified fields to BulkResult.
niemeyer Sep 8, 2015
f19dc44
testdb: only rsets with primaries may be healthy.
niemeyer Sep 14, 2015
c39bc0b
Support all the new MongoDB read preference modes.
niemeyer Sep 15, 2015
2f3a9b3
Resolve IPv4/v6 addresses concurrently. Prefer v4.
niemeyer Sep 21, 2015
9be224d
Index name support in EnsureIndex and DropIndexName
niemeyer Sep 29, 2015
d274112
Renew expired SSL auth test keys.
niemeyer Sep 29, 2015
aaa6296
Move test SSL key instructions into the key itself.
niemeyer Sep 30, 2015
60e73f6
Better bulk error messages.
niemeyer Sep 30, 2015
c279dec
Fix SelectServers example.
niemeyer Sep 30, 2015
42f1143
Document that Session is concurrency safe.
niemeyer Sep 30, 2015
51fd6ff
Document serialization order for struct fields.
niemeyer Sep 30, 2015
f0a7f76
Initialize NewObjectId counter from random seed.
niemeyer Sep 30, 2015
2975926
Add Index.Minf/Maxf to support float64 values.
niemeyer Sep 30, 2015
6227a67
Fixed Indexes to match closely EnsureIndex input.
niemeyer Oct 1, 2015
89612db
Fixed bulk error improvements for MongoDB <2.6.
niemeyer Oct 5, 2015
753e934
Add a few notes about future mgo.v3 changes.
niemeyer Oct 5, 2015
672cfa7
Fix test instability.
niemeyer Oct 5, 2015
2a23d74
Another test stability tweak.
niemeyer Oct 5, 2015
7adfcd1
Properly provide read preference in use to mongos.
niemeyer Oct 6, 2015
f402e3a
Merge v2-unstable into v2.
niemeyer Oct 6, 2015
c89feac
dbs.server.Process.Signal(os.Interrupt) instead of kill , kill causes…
navy1125 Oct 14, 2015
5c58cd2
Improve Safe.J/FSync docs, more mgo.v3 notes.
niemeyer Oct 14, 2015
4d04138
Only send read pref if slaveOk is set
niemeyer Oct 26, 2015
6eb62ba
Only send read pref if slaveOk is set
niemeyer Oct 27, 2015
769d644
Remove the errors when a struct tag contains a slash.
alexcesaro Oct 29, 2015
6f16319
Improve test suite setup reliability in 3.2.
niemeyer Oct 29, 2015
11a571b
BuildInfo.SysInfo is deprecated on 3.2.
niemeyer Nov 6, 2015
76d16c7
Expect textIndexVersion to be 3 in tests for 3.2.
niemeyer Nov 6, 2015
36bcd77
Stabilize order of bulk error messages.
niemeyer Nov 6, 2015
d3f62eb
Fix test for query comment field change in 3.2.
niemeyer Nov 10, 2015
07e4ee6
Query snapshot is broken in 3.2. Skip test for now.
niemeyer Nov 11, 2015
56e69fe
In 3.2 mongos test count commands rather than ops.
niemeyer Nov 11, 2015
a1dc310
Several more fixes for tests in 3.2.
niemeyer Nov 12, 2015
458582c
Add Session.SetBypassValidation.
niemeyer Nov 17, 2015
baa4323
Clarify that only exported fields are deserialized
glasser Nov 25, 2015
09d4460
Add support for bulk removes.
niemeyer Dec 3, 2015
1a5a4d0
Tune harness so it works with 2.6.3 again.
niemeyer Dec 7, 2015
e30de8a
Merge v2-unstable into v2.
niemeyer Dec 7, 2015
dac1974
Do not fallback to Monotonic mode improperly.
niemeyer Dec 15, 2015
d4e17e0
Work in progress on find and getMore commands.
niemeyer Dec 16, 2015
224c35c
Fix find command's batch size and skip.
niemeyer Dec 16, 2015
e57d4e9
All tests pass in 3.2 with find+getMore commands.
niemeyer Dec 21, 2015
9589f7c
fix typo
shawnps Jan 4, 2016
4c1af3e
fix typo
shawnps Jan 4, 2016
7b96a15
Handle document validation in Collection.Create.
niemeyer Jan 8, 2016
c244a32
Allow storage engine options on Collection.Create
niemeyer Jan 8, 2016
1374d68
correctly skip docs being read in to slices
Jan 13, 2016
bfa4c98
Fix a crash when bulk update and delete returned an connection error
szank Jan 15, 2016
5088382
Expose bulk error type and its individual cases.
niemeyer Jan 18, 2016
03c9f3e
Merge pull request #210 from szank/v2
niemeyer Jan 18, 2016
dfe1a76
Fix crash on bulk update and delete returned error.
szank Jan 15, 2016
caea72d
allow bson.ObjectId to satisfy encoding.TextMarshaler and encoding.Te…
jackspirou Jan 20, 2016
450e47b
Merge pull request #204 from shawnps/patch-2
niemeyer Jan 21, 2016
e5ee317
Merge pull request #203 from shawnps/patch-1
niemeyer Jan 21, 2016
23ac284
Merge pull request #196 from gabrielrussell/v2-unstable
niemeyer Jan 21, 2016
2f1e297
Merge pull request #192 from glasser/patch-1
niemeyer Jan 21, 2016
38ee730
Merge pull request #184 from alexcesaro/slash_in_tags
niemeyer Jan 21, 2016
f25a55a
Merge pull request #180 from navy1125/v2-unstable
niemeyer Jan 21, 2016
bc604f7
Merge pull request #212 from jackspirou/v2-unstable
niemeyer Jan 25, 2016
44b8a84
Merge pull request #137 from rychipman/v2-unstable
niemeyer Jan 25, 2016
8945b38
Tune error messages in ObjectId marshalers.
niemeyer Jan 25, 2016
4140674
Fix URL docs contributed.
niemeyer Jan 25, 2016
ed6aab1
Merge pull request #135 from deafgoat/v2-unstable
niemeyer Jan 25, 2016
04d4613
Do not remove GridFS file if index creation fails.
niemeyer Jan 25, 2016
85d1795
Logic on monotonic fallback test depends on 3.0
niemeyer Feb 1, 2016
43c7554
Restore TestQueryErrorNext's original iter.Next.
niemeyer Feb 1, 2016
3053837
Drop out-of-date socket timeout TODO.
niemeyer Feb 1, 2016
fc4b094
Fix bulk result data on 2.4.
niemeyer Feb 1, 2016
43689a3
Fix ChangeInfo.Updated and introduce Matched.
niemeyer Feb 1, 2016
d7b55b4
Enable TCP keep alives for all connections.
niemeyer Feb 1, 2016
e37b326
go fmt
niemeyer Feb 4, 2016
3871edd
Merge v2-unstable into v2.
niemeyer Feb 4, 2016
547dc79
Fix crash in new tcp keep-alive logic.
niemeyer Feb 7, 2016
d90005c
Fix batch size setting on getMore command.
niemeyer Feb 9, 2016
b84e858
Fix crash in new tcp keep-alive logic.
niemeyer Feb 7, 2016
9a615ba
Fix batch size setting on getMore command.
niemeyer Feb 9, 2016
6da6d2b
bson: Add test for embedded unexported struct using the ",inline" flag.
Feb 23, 2016
f3462d3
bson: Fix for ,inline-d structs of unexported embedded for Go 1.6.
Feb 23, 2016
59739de
Tentative .travis.yml
niemeyer Mar 1, 2016
19047af
Switch to daemontools and adopt Travis-CI.
niemeyer Mar 1, 2016
dae7702
Drop supervisord.conf.
niemeyer Mar 3, 2016
37d465b
Rename testdb to harness.
niemeyer Mar 3, 2016
775152b
Reorganized harness/ files.
niemeyer Mar 3, 2016
fca8faf
Drop shortlived testserver package (see dbtest).
niemeyer Mar 3, 2016
277c0a0
Fixed error iteration in writeOp
aleist Mar 4, 2016
9d3f72f
Prevent attempt to double-start test daemons.
niemeyer Mar 14, 2016
9aff4bc
Fix error on Apply when result contains errmsg.
niemeyer Mar 16, 2016
794c943
Merge pull request #228 from liviosoares/v2-unstable
niemeyer Mar 16, 2016
b6e2fa3
Merge embedded structs fix for Go 1.6 from unstable.
Feb 23, 2016
72aab81
Partial Decimal128 implementation.
niemeyer Mar 23, 2016
14a4475
Complete and optimized Decimal128 support.
niemeyer Apr 6, 2016
f9669fa
Update JSON decimal tests from upstream.
niemeyer Apr 6, 2016
8271275
Decimal JSON tests now use Inf as well.
niemeyer Apr 6, 2016
2451555
Fix Secondary mode over mongos.
niemeyer Apr 24, 2016
860dc8c
fix doc comment
jrwren Apr 28, 2016
ab44379
Import json package from Go under internal.
niemeyer May 2, 2016
29c1796
Decode function extensions.
niemeyer May 2, 2016
d41abac
UnmarshalJSON handling for function extensions.
niemeyer May 2, 2016
0308d06
internal/json: add type encoders and keyed decoders
niemeyer May 3, 2016
82635f8
Initial JSON extensions for bson.
niemeyer May 6, 2016
b6d4273
Add a Iter.Done function for determining if a cursor is still open
evan-stripe May 11, 2016
3a00153
Add tests for Iter.Done behavior
evan-stripe May 12, 2016
6fa7054
internal/json: reorganize for parsing 'undefined'
niemeyer May 14, 2016
833b186
internal/json: support decoding of consts
niemeyer May 15, 2016
25082e8
Godoc comment updates for default values
sha1sum May 22, 2016
84d0daa
json: check keyed before unmarshaler
niemeyer May 23, 2016
47f70ba
json: parse null/true/false as names, not literals
niemeyer May 23, 2016
4a00fd9
json: support func extensions starting with "new "
niemeyer May 23, 2016
a9ca31f
json: support `new Date(n)`
niemeyer May 23, 2016
3f0a074
json: support unquoted keys and trailing commas
niemeyer May 25, 2016
2859535
bson: further support for `new Date` json extension
niemeyer May 25, 2016
3e620f8
Fix VersionAtLeast comparison.
niemeyer Jun 2, 2016
0135bf7
Fix lsof parsing after Xenial behavior change.
niemeyer Jun 2, 2016
79c2699
Don't double-unmarshal on command runs out of debug.
niemeyer Jun 2, 2016
d9af9f9
Default chunk size is 255kb. Fix GridFS docs.
niemeyer Jun 8, 2016
c31d83f
Merge pull request #273 from sha1sum/v2-unstable
niemeyer Jun 8, 2016
2b6170e
Tweak SetMode/SetSafe/SetSocketTimeout docs.
niemeyer Jun 8, 2016
06b0f58
Merge pull request #267 from ebroder/have-more
niemeyer Jun 8, 2016
655a07e
Fix Iter.Done, tweak docs.
niemeyer Jun 8, 2016
f79b50d
Merge pull request #238 from aleist/v2-unstable
niemeyer Jun 8, 2016
29cc868
Merge pull request #263 from jrwren/patch-1
niemeyer Jun 9, 2016
5de973b
dont mix input and output buffers in cgo calls
Jun 21, 2016
f2d024e
Retry upserts that fail with "duplicate key error"
babbageclunk Jun 27, 2016
cd7f33e
Tweak formatting
babbageclunk Jun 27, 2016
ffc620c
Move upsert-retrying into Query.Apply
babbageclunk Jun 28, 2016
88b327f
Retry on duplicate key errors in Collection.Upsert
babbageclunk Jun 28, 2016
78c6063
Remove unused code
babbageclunk Jun 28, 2016
7f8e480
cache pid
256dpi Jul 5, 2016
b59bff9
Run txn tests in Travis config
babbageclunk Jul 5, 2016
2a98e8c
Skip TestTxnQueueStressTest unless -flaky is passed
babbageclunk Jul 6, 2016
6d88d84
Retry DropAll in txn test setup
babbageclunk Jul 6, 2016
ddea9f6
Bumping up retries and sleep time
babbageclunk Jul 6, 2016
e6ca633
Try to avoid port collisions when starting txn tests
babbageclunk Jul 6, 2016
11b8488
Review changes from Gustavo
babbageclunk Jul 10, 2016
eba0955
Change txn tests to use dbtest instead of mgo_test
babbageclunk Jul 10, 2016
f253ba2
Install gopkg.in/tomb.v2 in Travis CI
babbageclunk Jul 10, 2016
3529517
Review change from rogpeppe
babbageclunk Jul 14, 2016
28af4c4
Review change from rogpeppe
babbageclunk Jul 14, 2016
947661c
Review change from jam - log if there was a retry
babbageclunk Jul 14, 2016
ffaa07c
Merge pull request #294 from 256dpi/cache-pid
niemeyer Jul 14, 2016
aee6a64
Merge pull request #291 from babbageclunk/fix-277
niemeyer Jul 14, 2016
3201c01
don't crash if password not specified for sasl acquirecredentials
mpobrien Jul 18, 2016
d0284ad
Merge pull request #300 from mpobrien/v2-unstable
niemeyer Jul 29, 2016
48551c8
Merge pull request #285 from gabrielrussell/v2-unstable
niemeyer Jul 29, 2016
f527638
Complement decimal128 implementation.
niemeyer Jul 30, 2016
98e6a59
Document extended JSON functions.
niemeyer Jul 30, 2016
23c8af5
Merge v2-unstable.
niemeyer Aug 1, 2016
293ca5c
Drop redundant/incorrect debug on upsert retry.
niemeyer Aug 1, 2016
9a2573d
Initial collation support in indexes.
niemeyer Aug 1, 2016
090c469
Merge v2-unstable into v2.
niemeyer Aug 1, 2016
b6121c6
Fix travis go import path to point to stable.
niemeyer Aug 1, 2016
0108465
Drop specifications/ sneaked into repository.
niemeyer Aug 1, 2016
1e52f61
fix integer constant overflow on 32-bit systems
zachjs Aug 3, 2016
362ae10
Fix the IsDup retry error handling on Apply.
niemeyer Aug 11, 2016
f2b6f6c
Merge pull request #316 from go-mgo/is-dup-retry-fix
niemeyer Aug 18, 2016
3f83fa5
Merge pull request #311 from zachjs/v2
niemeyer Aug 18, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .bzrignore

This file was deleted.

45 changes: 45 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
language: go

go_import_path: gopkg.in/mgo.v2

addons:
apt:
packages:

env:
global:
- BUCKET=https://niemeyer.s3.amazonaws.com
matrix:
- GO=1.4.1 MONGODB=x86_64-2.2.7
- GO=1.4.1 MONGODB=x86_64-2.4.14
- GO=1.4.1 MONGODB=x86_64-2.6.11
- GO=1.4.1 MONGODB=x86_64-3.0.9
- GO=1.4.1 MONGODB=x86_64-3.2.3-nojournal
- GO=1.5.3 MONGODB=x86_64-3.0.9
- GO=1.6 MONGODB=x86_64-3.0.9

install:
- eval "$(gimme $GO)"

- wget $BUCKET/mongodb-linux-$MONGODB.tgz
- tar xzvf mongodb-linux-$MONGODB.tgz
- export PATH=$PWD/mongodb-linux-$MONGODB/bin:$PATH

- wget $BUCKET/daemontools.tar.gz
- tar xzvf daemontools.tar.gz
- export PATH=$PWD/daemontools:$PATH

- go get gopkg.in/check.v1
- go get gopkg.in/yaml.v2
- go get gopkg.in/tomb.v2

before_script:
- export NOIPV6=1
- make startdb

script:
- (cd bson && go test -check.v)
- go test -check.v -fast
- (cd txn && go test -check.v)

# vim:sw=4:ts=4:et
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
startdb:
@testdb/setup.sh start
@harness/setup.sh start

stopdb:
@testdb/setup.sh stop
@harness/setup.sh stop
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
The MongoDB driver for Go
-------------------------

Please go to [http://labix.org/mgo](http://labix.org/mgo) for all project details.
65 changes: 60 additions & 5 deletions auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@ package mgo

import (
"crypto/md5"
"crypto/sha1"
"encoding/hex"
"errors"
"fmt"
"labix.org/v2/mgo/bson"
"sync"

"gopkg.in/mgo.v2/bson"
"gopkg.in/mgo.v2/internal/scram"
)

type authCmd struct {
Expand Down Expand Up @@ -157,6 +160,9 @@ func (socket *mongoSocket) resetNonce() {

func (socket *mongoSocket) Login(cred Credential) error {
socket.Lock()
if cred.Mechanism == "" && socket.serverInfo.MaxWireVersion >= 3 {
cred.Mechanism = "SCRAM-SHA-1"
}
for _, sockCred := range socket.creds {
if sockCred == cred {
debugf("Socket %p to %s: login: db=%q user=%q (already logged in)", socket, socket.addr, cred.Source, cred.Username)
Expand All @@ -176,12 +182,12 @@ func (socket *mongoSocket) Login(cred Credential) error {

var err error
switch cred.Mechanism {
case "", "MONGO-CR":
case "", "MONGODB-CR", "MONGO-CR": // Name changed to MONGODB-CR in SERVER-8501.
err = socket.loginClassic(cred)
case "PLAIN":
err = socket.loginPlain(cred)
case "MONGO-X509":
err = fmt.Errorf("unsupported authentication mechanism: %s", cred.Mechanism)
case "MONGODB-X509":
err = socket.loginX509(cred)
default:
// Try SASL for everything else, if it is available.
err = socket.loginSASL(cred)
Expand Down Expand Up @@ -229,6 +235,27 @@ func (socket *mongoSocket) loginClassic(cred Credential) error {
})
}

type authX509Cmd struct {
Authenticate int
User string
Mechanism string
}

func (socket *mongoSocket) loginX509(cred Credential) error {
cmd := authX509Cmd{Authenticate: 1, User: cred.Username, Mechanism: "MONGODB-X509"}
res := authResult{}
return socket.loginRun(cred.Source, &cmd, &res, func() error {
if !res.Ok {
return errors.New(res.ErrMsg)
}
socket.Lock()
socket.dropAuth(cred.Source)
socket.creds = append(socket.creds, cred)
socket.Unlock()
return nil
})
}

func (socket *mongoSocket) loginPlain(cred Credential) error {
cmd := saslCmd{Start: 1, Mechanism: "PLAIN", Payload: []byte("\x00" + cred.Username + "\x00" + cred.Password)}
res := authResult{}
Expand All @@ -245,7 +272,16 @@ func (socket *mongoSocket) loginPlain(cred Credential) error {
}

func (socket *mongoSocket) loginSASL(cred Credential) error {
sasl, err := saslNew(cred, socket.Server().Addr)
var sasl saslStepper
var err error
if cred.Mechanism == "SCRAM-SHA-1" {
// SCRAM is handled without external libraries.
sasl = saslNewScram(cred)
} else if len(cred.ServiceHost) > 0 {
sasl, err = saslNew(cred, cred.ServiceHost)
} else {
sasl, err = saslNew(cred, socket.Server().Addr)
}
if err != nil {
return err
}
Expand Down Expand Up @@ -317,6 +353,25 @@ func (socket *mongoSocket) loginSASL(cred Credential) error {
return nil
}

func saslNewScram(cred Credential) *saslScram {
credsum := md5.New()
credsum.Write([]byte(cred.Username + ":mongo:" + cred.Password))
client := scram.NewClient(sha1.New, cred.Username, hex.EncodeToString(credsum.Sum(nil)))
return &saslScram{cred: cred, client: client}
}

type saslScram struct {
cred Credential
client *scram.Client
}

func (s *saslScram) Close() {}

func (s *saslScram) Step(serverData []byte) (clientData []byte, done bool, err error) {
more := s.client.Step(serverData)
return s.client.Out(), !more, s.client.Err()
}

func (socket *mongoSocket) loginRun(db string, query, result interface{}, f func() error) error {
var mutex sync.Mutex
var replyErr error
Expand Down
Loading