diff --git a/vendor/git.autistici.org/ai3/go-common/ldap/pool.go b/vendor/git.autistici.org/ai3/go-common/ldap/pool.go
index 560d639b7091334e83d290b5c0ac1ff56b1261ee..520dcf2bdcdb719873315324477cbae09aa902ca 100644
--- a/vendor/git.autistici.org/ai3/go-common/ldap/pool.go
+++ b/vendor/git.autistici.org/ai3/go-common/ldap/pool.go
@@ -7,11 +7,30 @@ import (
 	"net/url"
 	"time"
 
-	"git.autistici.org/ai3/go-common/clientutil"
 	"github.com/cenkalti/backoff"
 	"gopkg.in/ldap.v2"
 )
 
+// Parameters that define the exponential backoff algorithm used.
+var (
+	ExponentialBackOffInitialInterval = 100 * time.Millisecond
+	ExponentialBackOffMultiplier      = 1.4142
+)
+
+// newExponentialBackOff creates a backoff.ExponentialBackOff object
+// with our own default values.
+func newExponentialBackOff() *backoff.ExponentialBackOff {
+	b := backoff.NewExponentialBackOff()
+	b.InitialInterval = ExponentialBackOffInitialInterval
+	b.Multiplier = ExponentialBackOffMultiplier
+
+	// Set MaxElapsedTime to 0 because we expect the overall
+	// timeout to be dictated by the request Context.
+	b.MaxElapsedTime = 0
+
+	return b
+}
+
 // ConnectionPool provides a goroutine-safe pool of long-lived LDAP
 // connections that will reconnect on errors.
 type ConnectionPool struct {
@@ -129,14 +148,14 @@ func NewConnectionPool(uri, bindDN, bindPw string, cacheSize int) (*ConnectionPo
 }
 
 func (p *ConnectionPool) doRequest(ctx context.Context, fn func(*ldap.Conn) error) error {
-	return clientutil.Retry(func() error {
+	return backoff.Retry(func() error {
 		conn, err := p.Get(ctx)
 		if err != nil {
 			// Here conn is nil, so we don't need to Release it.
 			if isTemporaryLDAPError(err) {
-				return clientutil.TempError(err)
+				return err
 			}
-			return err
+			return backoff.Permanent(err)
 		}
 
 		if deadline, ok := ctx.Deadline(); ok {
@@ -144,13 +163,12 @@ func (p *ConnectionPool) doRequest(ctx context.Context, fn func(*ldap.Conn) erro
 		}
 
 		err = fn(conn)
-		if err != nil && isTemporaryLDAPError(err) {
-			p.Release(conn, err)
-			return clientutil.TempError(err)
-		}
 		p.Release(conn, err)
+		if err != nil && !isTemporaryLDAPError(err) {
+			err = backoff.Permanent(err)
+		}
 		return err
-	}, backoff.WithContext(clientutil.NewExponentialBackOff(), ctx))
+	}, backoff.WithContext(newExponentialBackOff(), ctx))
 }
 
 // Search performs the given search request. It will retry the request
diff --git a/vendor/vendor.json b/vendor/vendor.json
index a75080acba2ef3edf2ecf6e27fc74b1fcc76670f..c59c8229cb6518072ef2b9aaca2aac0545bd66cd 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -5,44 +5,44 @@
 		{
 			"checksumSHA1": "raJx5BjBbVQG0ylGSjPpi+JvqjU=",
 			"path": "git.autistici.org/ai3/go-common",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
 			"checksumSHA1": "49MChcx9D+/+pCyl/F469TcQcK4=",
 			"path": "git.autistici.org/ai3/go-common/clientutil",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
-			"checksumSHA1": "udgeRdy83f6tJmhoKXFxCfwOIZw=",
+			"checksumSHA1": "kQbBWZqrXc95wodlrOKEshQVaBo=",
 			"path": "git.autistici.org/ai3/go-common/ldap",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
 			"checksumSHA1": "7VBLbwaK1m/jwsk8sLsh4iD9T/s=",
 			"path": "git.autistici.org/ai3/go-common/serverutil",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
 			"checksumSHA1": "T2vf4xzKRqoIjfXlofMgudKA8rA=",
 			"path": "git.autistici.org/ai3/go-common/unix",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
 			"checksumSHA1": "OY/kamdVCtqr00dhc+STq7ApbmA=",
 			"path": "git.autistici.org/ai3/go-common/userenckey",
-			"revision": "193e29e61c81e6bb5548bfe89bba05836d06b61f",
-			"revisionTime": "2018-08-16T21:47:58Z"
+			"revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357",
+			"revisionTime": "2018-08-17T06:38:25Z"
 		},
 		{
 			"checksumSHA1": "QHzKyLU57jphYBzuhl4ELbCwVX0=",
 			"path": "git.autistici.org/id/go-sso",
-			"revision": "dc62a1d65832c8a3f73e7a0cffb78ad0b4d3d8fc",
-			"revisionTime": "2018-02-18T15:46:43Z"
+			"revision": "a7ddc7fb9c9053ad8c239e6e968a6f73bb181021",
+			"revisionTime": "2018-08-17T07:29:35Z"
 		},
 		{
 			"checksumSHA1": "spyv5/YFBjYyZLZa1U2LBfDR8PM=",