Sign-in: take the address in lower case, as the server keeps it #86
Closed
ryoitsu69
wants to merge 1 commit from
ryoitsu69/anotherim-js:fix/sign-in-lower-case into develop
pull from: ryoitsu69/anotherim-js:fix/sign-in-lower-case
merge into: another-im:develop
another-im:develop
another-im:fix/touchscreen-pinch-zoom
another-im:fix/call-window-touch
another-im:fix/idle-cpu
another-im:fix/issue-69-changed-key
another-im:fix/relock-dismiss
another-im:fix/settings-accounts
another-im:feat/unified-dialogs-1
another-im:feat/unified-dialogs-2
another-im:feat/unified-dialogs-3
another-im:feat/one-status
another-im:macos-0.6.1
another-im:fix/console-tab-out
another-im:fix/desktop-drop
another-im:fix/xml-console-menu
another-im:feat/telegram-connect
another-im:feat/chat-tags
another-im:feat/muc-omemo
another-im:integrate/origin-develop-2026-10-02
another-im:fix/media-bubble-size
another-im:fix/empty-click-focus
another-im:feat/system-font-default
another-im:integrate/develop-2026-10-02
another-im:fix/attachment-decrypt
another-im:feat/system-font
another-im:fix/chat-links
another-im:fix/android-background-network
another-im:feat/tray
another-im:feat/thumb-cache
another-im:fix/android-csi-native
another-im:feat/opfs-store
another-im:fix/alttab-focus
another-im:try/groupcalls
another-im:feat/pwa-install
another-im:integrate/0.3.0
another-im:fix/upload-bubble-030
another-im:feat/drag-select
another-im:fix/upload-bubble
another-im:feat/encryption-info
another-im:chore/libtacky-path
another-im:feat/chat-header-menus
another-im:integrate/develop
another-im:fix/saved-top-linux-voice
another-im:fix/dialog-close-icons
another-im:feat/window-title-unread
another-im:feat/groupcalls
another-im:fix/open-picture-one-tap
another-im:feat/server-info-console
another-im:fix/chat-open-scroll-end
another-im:fix/desktop-push-mutes
another-im:fix/android-mute-push-selection
another-im:feat/otr-lock-colours
another-im:otr-v3-secret-chats
another-im:chore/remove-otr
another-im:feat/room-invites
another-im:feat/voice-video-messages
another-im:docs/readme
another-im:fix/android-empty-files
another-im:api-freeze
another-im:feat/push-counts
another-im:feat/h264-android-save
another-im:feat/keep-attachments-decrypted
another-im:feat/media-player
another-im:feat/fix-subdomain-attachments
another-im:feat/fonts-pt-sans
another-im:feat/always-decrypt-on-the-fly
another-im:feat/default-scale-125
another-im:fix/composer-focus-after-send
another-im:feat/android-native-calls
another-im:feat/media-stream-decrypt
another-im:feat/download-failure
another-im:feat/outbox-cap
another-im:feat/web-call-sheet
another-im:feat/first-run-push-check
another-im:feat/font-size-110
another-im:feat/log-view
another-im:fix/failed-transfer-history
another-im:feat/secure-unlock
another-im:feat/tpm-desktop
another-im:feat/tpm-android
another-im:feat/api-freeze-client
No reviewers
Labels
Clear labels
android
bug
Something is not working
duplicate
This issue or pull request already exists
feature request
New feature
linux
linux exclusive
macos
macos exclusive
needsinfo
Needs more information
severity: high
Major issue, significantly impacts usability or blocks core functionality
severity: low
Minor issue, cosmetic or rarely affects usage
severity: medium
Noticeable issue, but there is a workaround or limited impact
telegram_gw
issues related to the telegram gw
ui/ux
issues related to the interface and user experience (visual glitches, layout, interactions, usability problems)
windows
windows exclusive
wontfix
This won't be fixed
No labels
android
bug
duplicate
feature request
linux
macos
needsinfo
severity: high
severity: low
severity: medium
telegram_gw
ui/ux
windows
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
another-im/anotherim-js!86
Loading…
Reference in a new issue
No description provided.
Delete branch "ryoitsu69/anotherim-js:fix/sign-in-lower-case"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
An address typed with capitals cannot sign in from the desktop or Android app on an ejabberd server:
Juliet@capulet.litis refused as a wrong password, whilejuliet@capulet.litsigns in with the same password. A sign-up with capitals is refused the same way at the sign-in that follows it. The browser build is not refused.Cause.
process_sasl2_successin processone/xmpp (xmpp_stream_in.erl, since 8ea4b44) compares the prepared localpart of the stream'sfromwith the SASL name as sent, and libtacky sends the name as the account's row has it. The browser goes over WebSocket, where ejabberd offers no SASL2, and never reaches that check.Fix. The address is taken in lower case before the account's row exists, so the row,
-accand what the server binds are one spelling from the start:addressTargetalready lower-cased the domain and now does the name too. The password form and OAuth both read it, and Settings > Accounts > Add an account opens the same form.registeredJiddoes the same for the sign-in after a sign-up.Preparing only the SASL name in libtacky would not do: the row keeps its capitals while events turn to the name the server binds, that name is no account, and the FAST token is lost (checked on libtacky v1.2.0-rc2 with that one change). Normalising
-accin libtacky alone would not do either, since the sign-in card watchesconnState(acc)under the string it sent.Tests. Three new ones, each failing without the change, in
login-screen.test.ts,registration.test.tsandwelcome-shell.test.ts.make test-ui check: 5089 passed, 8 skipped;tsc, the catalogues andcheck-macospass.Checked with a 0.8.0-rc4 AppImage built from this branch, on another.im: an address typed with capitals signs in and the account is stored in lower case, for the first account and for a second one added from inside the app.
Not covered:
account.jidis passed on as it comes.-accand-chatlookups of another-im/libtacky#19.🤖 Generated with Claude Code
fromwith the SASL name as sent, so an address typed with capitals was refused as a wrong password from the desktop and Android apps, while the browser, over WebSocket where ejabberd offers no SASL2, signed in. addressTarget already lower-cased the domain and now does the name too, and registeredJid does the same for the sign-in after a sign-up, so the account's row, -acc and what the server binds are one spelling from the start. Preparing only the SASL name in libtacky is not enough: the row keeps its capitals while events turn to the bound name and the FAST token finds no row. A row already written with capitals stays as it is, to be removed and added again. c3553338f2Sign-in: the address is taken in lower case, as the server keeps it. ejabberd's SASL2 (processone/xmpp, process_sasl2_success, since 8ea4b44) compares the prepared localpart of the stream'sto Sign-in: take the address in lower case, as the server keeps itfromwith the SASL name as sent, so an address typed with ca…Closing: 0.8.0-rc5 already takes the address in lower case (
ecce2f19,59ccee91)Pull request closed