Merge main, fix issues

This commit is contained in:
Till Faelligen 2023-06-15 14:48:21 +02:00
parent e6fd65b8fc
commit 4406c85c98
No known key found for this signature in database
GPG key ID: ACCDC9606D472758
10 changed files with 17 additions and 11 deletions

View file

@ -341,6 +341,7 @@ func (r *downloadRequest) addDownloadFilenameToHeaders(
} }
if len(filename) == 0 { if len(filename) == 0 {
w.Header().Set("Content-Disposition", "attachment")
return nil return nil
} }
@ -376,13 +377,13 @@ func (r *downloadRequest) addDownloadFilenameToHeaders(
// that would otherwise be parsed as a control character in the // that would otherwise be parsed as a control character in the
// Content-Disposition header // Content-Disposition header
w.Header().Set("Content-Disposition", fmt.Sprintf( w.Header().Set("Content-Disposition", fmt.Sprintf(
`inline; filename=%s%s%s`, `attachment; filename=%s%s%s`,
quote, unescaped, quote, quote, unescaped, quote,
)) ))
} else { } else {
// For UTF-8 filenames, we quote always, as that's the standard // For UTF-8 filenames, we quote always, as that's the standard
w.Header().Set("Content-Disposition", fmt.Sprintf( w.Header().Set("Content-Disposition", fmt.Sprintf(
`inline; filename*=utf-8''%s`, `attachment; filename*=utf-8''%s`,
url.QueryEscape(unescaped), url.QueryEscape(unescaped),
)) ))
} }

View file

@ -1029,7 +1029,7 @@ func (r *Queryer) QueryUserIDForSender(ctx context.Context, roomID spec.RoomID,
} }
if userKeys, ok := result[roomID]; ok { if userKeys, ok := result[roomID]; ok {
if userID, ok := userKeys[string(bytes)]; ok { if userID, ok := userKeys[string(senderID)]; ok {
return spec.NewUserID(userID, true) return spec.NewUserID(userID, true)
} }
} }

View file

@ -25,6 +25,7 @@ import (
"github.com/matrix-org/dendrite/internal/sqlutil" "github.com/matrix-org/dendrite/internal/sqlutil"
"github.com/matrix-org/dendrite/roomserver/storage/tables" "github.com/matrix-org/dendrite/roomserver/storage/tables"
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib/spec"
) )
const userRoomKeysSchema = ` const userRoomKeysSchema = `
@ -145,7 +146,7 @@ func (s *userRoomKeysStatements) BulkSelectUserNIDs(ctx context.Context, txn *sq
if err = rows.Scan(&userRoomKeyPair.EventStateKeyNID, &userRoomKeyPair.RoomNID, &publicKey); err != nil { if err = rows.Scan(&userRoomKeyPair.EventStateKeyNID, &userRoomKeyPair.RoomNID, &publicKey); err != nil {
return nil, err return nil, err
} }
result[string(publicKey)] = userRoomKeyPair result[spec.Base64Bytes(publicKey).Encode()] = userRoomKeyPair
} }
return result, rows.Err() return result, rows.Err()
} }

View file

@ -183,7 +183,7 @@ func TestUserRoomKeys(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
wantKeys := map[spec.RoomID]map[string]string{ wantKeys := map[spec.RoomID]map[string]string{
*roomID: { *roomID: {
string(key.Public().(ed25519.PublicKey)): userID.String(), spec.Base64Bytes(key.Public().(ed25519.PublicKey)).Encode(): userID.String(),
}, },
} }
assert.Equal(t, wantKeys, userIDs) assert.Equal(t, wantKeys, userIDs)

View file

@ -25,6 +25,7 @@ import (
"github.com/matrix-org/dendrite/internal/sqlutil" "github.com/matrix-org/dendrite/internal/sqlutil"
"github.com/matrix-org/dendrite/roomserver/storage/tables" "github.com/matrix-org/dendrite/roomserver/storage/tables"
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib/spec"
) )
const userRoomKeysSchema = ` const userRoomKeysSchema = `
@ -159,7 +160,7 @@ func (s *userRoomKeysStatements) BulkSelectUserNIDs(ctx context.Context, txn *sq
if err = rows.Scan(&userRoomKeyPair.EventStateKeyNID, &userRoomKeyPair.RoomNID, &publicKey); err != nil { if err = rows.Scan(&userRoomKeyPair.EventStateKeyNID, &userRoomKeyPair.RoomNID, &publicKey); err != nil {
return nil, err return nil, err
} }
result[string(publicKey)] = userRoomKeyPair result[spec.Base64Bytes(publicKey).Encode()] = userRoomKeyPair
} }
return result, rows.Err() return result, rows.Err()
} }

View file

@ -13,6 +13,7 @@ import (
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/dendrite/setup/config" "github.com/matrix-org/dendrite/setup/config"
"github.com/matrix-org/dendrite/test" "github.com/matrix-org/dendrite/test"
"github.com/matrix-org/gomatrixserverlib/spec"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
ed255192 "golang.org/x/crypto/ed25519" ed255192 "golang.org/x/crypto/ed25519"
) )
@ -101,8 +102,8 @@ func TestUserRoomKeysTable(t *testing.T) {
assert.NotNil(t, gotKeys) assert.NotNil(t, gotKeys)
wantKeys := map[string]types.UserRoomKeyPair{ wantKeys := map[string]types.UserRoomKeyPair{
string(key2.Public().(ed25519.PublicKey)): {RoomNID: roomNID, EventStateKeyNID: userNID}, string(spec.Base64Bytes(key2.Public().(ed25519.PublicKey)).Encode()): {RoomNID: roomNID, EventStateKeyNID: userNID},
string(key3.Public().(ed25519.PublicKey)): {RoomNID: roomNID, EventStateKeyNID: userNID2}, string(spec.Base64Bytes(key3.Public().(ed25519.PublicKey)).Encode()): {RoomNID: roomNID, EventStateKeyNID: userNID2},
} }
assert.Equal(t, wantKeys, gotKeys) assert.Equal(t, wantKeys, gotKeys)

View file

@ -230,7 +230,7 @@ func TestSearch(t *testing.T) {
stateEvents = append(stateEvents, x) stateEvents = append(stateEvents, x)
stateEventIDs = append(stateEventIDs, x.EventID()) stateEventIDs = append(stateEventIDs, x.EventID())
} }
x.StateKeyResolved = x.StateKey()
sp, err = db.WriteEvent(processCtx.Context(), x, stateEvents, stateEventIDs, nil, nil, false, gomatrixserverlib.HistoryVisibilityShared) sp, err = db.WriteEvent(processCtx.Context(), x, stateEvents, stateEventIDs, nil, nil, false, gomatrixserverlib.HistoryVisibilityShared)
assert.NoError(t, err) assert.NoError(t, err)
if x.Type() != "m.room.message" { if x.Type() != "m.room.message" {

View file

@ -109,7 +109,7 @@ func (s *membershipsStatements) UpsertMembership(
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext( _, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
ctx, ctx,
event.RoomID(), event.RoomID(),
event.UserID.String(), event.StateKeyResolved,
membership, membership,
event.EventID(), event.EventID(),
streamPos, streamPos,

View file

@ -112,7 +112,7 @@ func (s *membershipsStatements) UpsertMembership(
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext( _, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
ctx, ctx,
event.RoomID(), event.RoomID(),
event.UserID.String(), event.StateKeyResolved,
membership, membership,
event.EventID(), event.EventID(),
streamPos, streamPos,

View file

@ -80,6 +80,7 @@ func TestMembershipsTable(t *testing.T) {
defer cancel() defer cancel()
for _, ev := range userEvents { for _, ev := range userEvents {
ev.StateKeyResolved = ev.StateKey()
if err := table.UpsertMembership(ctx, nil, ev, types.StreamPosition(ev.Depth()), 1); err != nil { if err := table.UpsertMembership(ctx, nil, ev, types.StreamPosition(ev.Depth()), 1); err != nil {
t.Fatalf("failed to upsert membership: %s", err) t.Fatalf("failed to upsert membership: %s", err)
} }
@ -134,6 +135,7 @@ func testUpsert(t *testing.T, ctx context.Context, table tables.Memberships, mem
ev := room.CreateAndInsert(t, user, spec.MRoomMember, map[string]interface{}{ ev := room.CreateAndInsert(t, user, spec.MRoomMember, map[string]interface{}{
"membership": spec.Join, "membership": spec.Join,
}, test.WithStateKey(user.ID)) }, test.WithStateKey(user.ID))
ev.StateKeyResolved = ev.StateKey()
// Insert the same event again, but with different positions, which should get updated // Insert the same event again, but with different positions, which should get updated
if err = table.UpsertMembership(ctx, nil, ev, 2, 2); err != nil { if err = table.UpsertMembership(ctx, nil, ev, 2, 2); err != nil {
t.Fatalf("failed to upsert membership: %s", err) t.Fatalf("failed to upsert membership: %s", err)