mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-17 16:50:14 -04:00
Merge remote-tracking branch 'upstream/release-v1.59'
This commit is contained in:
commit
4d95e65860
8 changed files with 62 additions and 12 deletions
|
@ -109,10 +109,10 @@ class RoomStateEventRestServlet(TransactionRestServlet):
|
|||
self.auth = hs.get_auth()
|
||||
|
||||
def register(self, http_server: HttpServer) -> None:
|
||||
# /room/$roomid/state/$eventtype
|
||||
# /rooms/$roomid/state/$eventtype
|
||||
no_state_key = "/rooms/(?P<room_id>[^/]*)/state/(?P<event_type>[^/]*)$"
|
||||
|
||||
# /room/$roomid/state/$eventtype/$statekey
|
||||
# /rooms/$roomid/state/$eventtype/$statekey
|
||||
state_key = (
|
||||
"/rooms/(?P<room_id>[^/]*)/state/"
|
||||
"(?P<event_type>[^/]*)/(?P<state_key>[^/]*)$"
|
||||
|
|
|
@ -53,6 +53,7 @@ from synapse.storage.util.sequence import SequenceGenerator
|
|||
from synapse.types import StateMap, get_domain_from_id
|
||||
from synapse.util import json_encoder
|
||||
from synapse.util.iterutils import batch_iter, sorted_topologically
|
||||
from synapse.util.stringutils import non_null_str_or_none
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from synapse.server import HomeServer
|
||||
|
@ -1737,9 +1738,6 @@ class PersistEventsStore:
|
|||
not affect the current local state.
|
||||
"""
|
||||
|
||||
def non_null_str_or_none(val: Any) -> Optional[str]:
|
||||
return val if isinstance(val, str) and "\u0000" not in val else None
|
||||
|
||||
self.db_pool.simple_insert_many_txn(
|
||||
txn,
|
||||
table="room_memberships",
|
||||
|
|
|
@ -29,6 +29,7 @@ from typing import (
|
|||
from typing_extensions import TypedDict
|
||||
|
||||
from synapse.api.errors import StoreError
|
||||
from synapse.util.stringutils import non_null_str_or_none
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from synapse.server import HomeServer
|
||||
|
@ -469,11 +470,9 @@ class UserDirectoryBackgroundUpdateStore(StateDeltasStore):
|
|||
"""
|
||||
Update or add a user's profile in the user directory.
|
||||
"""
|
||||
# If the display name or avatar URL are unexpected types, overwrite them.
|
||||
if not isinstance(display_name, str):
|
||||
display_name = None
|
||||
if not isinstance(avatar_url, str):
|
||||
avatar_url = None
|
||||
# If the display name or avatar URL are unexpected types, replace with None.
|
||||
display_name = non_null_str_or_none(display_name)
|
||||
avatar_url = non_null_str_or_none(avatar_url)
|
||||
|
||||
def _update_profile_in_user_dir_txn(txn: LoggingTransaction) -> None:
|
||||
self.db_pool.simple_upsert_txn(
|
||||
|
|
|
@ -16,7 +16,7 @@ import itertools
|
|||
import re
|
||||
import secrets
|
||||
import string
|
||||
from typing import Iterable, Optional, Tuple
|
||||
from typing import Any, Iterable, Optional, Tuple
|
||||
|
||||
from netaddr import valid_ipv6
|
||||
|
||||
|
@ -247,3 +247,11 @@ def base62_encode(num: int, minwidth: int = 1) -> str:
|
|||
# pad to minimum width
|
||||
pad = "0" * (minwidth - len(res))
|
||||
return pad + res
|
||||
|
||||
|
||||
def non_null_str_or_none(val: Any) -> Optional[str]:
|
||||
"""Check that the arg is a string containing no null (U+0000) codepoints.
|
||||
|
||||
If so, returns the given string unmodified; otherwise, returns None.
|
||||
"""
|
||||
return val if isinstance(val, str) and "\u0000" not in val else None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue