Always return `one_time_key_counts` on `/keys/upload`
The OTK count is
[required](https://spec.matrix.org/v1.4/client-server-api/#post_matrixclientv3keysupload)
in responses to `/keys/upload`, so return those.
MODIFY
clientapi/routing/keys.go
clientapi/routing/keys.go
@@ -19,11 +19,12 @@ import (
"net/http"
"time"
+ "github.com/matrix-org/util"
+
"github.com/matrix-org/dendrite/clientapi/httputil"
"github.com/matrix-org/dendrite/clientapi/jsonerror"
"github.com/matrix-org/dendrite/keyserver/api"
userapi "github.com/matrix-org/dendrite/userapi/api"
- "github.com/matrix-org/util"
)
type uploadKeysRequest struct {
@@ -77,7 +78,6 @@ func UploadKeys(req *http.Request, keyAPI api.ClientKeyAPI, device *userapi.Devi
}
}
keyCount := make(map[string]int)
- // we only return key counts when the client uploads OTKs
if len(uploadRes.OneTimeKeyCounts) > 0 {
keyCount = uploadRes.OneTimeKeyCounts[0].KeyCount
}

MODIFY
keyserver/internal/internal.go
keyserver/internal/internal.go
@@ -70,6 +70,11 @@ func (a *KeyInternalAPI) PerformUploadKeys(ctx context.Context, req *api.Perform
if len(req.OneTimeKeys) > 0 {
a.uploadOneTimeKeys(ctx, req, res)
}
+ otks, err := a.DB.OneTimeKeysCount(ctx, req.UserID, req.DeviceID)
+ if err != nil {
+ return err
+ }
+ res.OneTimeKeyCounts = []api.OneTimeKeysCount{*otks}
return nil
}

Always return `one_time_key_counts` on `/keys/upload` (#2769)

The OTK count is
[required](https://spec.matrix.org/v1.4/client-server-api/#post_matrixclientv3keysupload)
in responses to `/keys/upload`, so return those.