element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
GNU Affero General Public License v3.0
11.23k stars 2k forks source link

No error when clicking Voice or Video call when app has no connection to homeserver #22331

Closed jittygitty closed 2 years ago

jittygitty commented 2 years ago

Steps to reproduce

  1. Where are you starting? What can you see? Click to call someone in a DM direct message, and "nothing" happens when click voice or video button.

Outcome

What did you expect?

I expect some ERROR message, something like maybe; "You are not allowed to place a call because only Admins are allowed to place call, and your Dendrite or other homeserver didn't properly give Same PowerLevel to both participants in a DM 2people private channel/room." Or maybe an error like "We can not detect the "presence" of the other person and we can not let you just talk to yourself or you might go crazy."

What happened instead?

NOTHING. Not even a "sorry"! : D

Operating system

Window s10

Application version

Element version: 1.10.13 Olm version: 3.2.8

How did you install the app?

Official Desktop installer then update from inside app

Homeserver

Latest github master from 5/22 or 5/23/2022

Will you send logs?

Yes

dbkr commented 2 years ago

Assuming this ended up being the same cause as https://github.com/vector-im/element-web/issues/22330 this will be because the app didn't have an internet connection: I'll update the title to reflect this.

jittygitty commented 2 years ago

@dbkr No this is not related to #22330 because this issue existed even "before" I updated and had the network connection issue described in #22330. This is confirmed because "messaging" worked perfectly well, even though the voice and video buttons "did nothing".

This issue is likely related to a "presence" sensing issue, where client thinks there's only one person around, when in fact messaging works, or it is "more?" likely due to (bug?) where Dendrite server did not give PL100 to BOTH participants in a DM room ( https://github.com/matrix-org/dendrite/pull/2485 ). Either way, the request is for the CLIENT to provide more meaningful info/error message. I have upgraded Dendrite but that won't fix previously created rooms, their users still won't have PL100.

Another very USEFUL thing would be from Client to be able to user your HOMESERVER Admin powers to "upgrade" any user, even your own, to Admin in any room on the homeserver you control, like IRC Operator.

turt2live commented 2 years ago

I don't think this will be related to power levels or presence of the user - we have very solid cases to ensure that calls in empty rooms (or rooms where you don't have permission to start calls in) result in an error message immediately.

I can however see that connection issues or homeserver performance will affect the ability for a call to start. Do you have more information about what your connection stability was like at the time?

turt2live commented 2 years ago

Your issue description also states that logs were sent for this issue, but I can't find them. Once you reproduce the issue, please go to settings -> help -> submit debug logs and use this issue's URL in the field.

jittygitty commented 2 years ago

@turt2live How do I send you the logs as attachment instead of your app sending them, because I "redacted" a few things, from the app it doesn't seem to let me attach the logs.

Also there's absolutely no homeserver "performance" issue, load is like 0.05 and has plenty ram, it runs on direct hardware 64gb (no VMs etc) dual cpu 24 total cores, free shows 40gb ram is free, 0 of swap used. It is in a datacenter connected to gigabit. Also as mentioned text messaging works fine when audio/video fails.

jittygitty commented 2 years ago

@dbkr @turt2live Do you have a website upload area where I can upload logs to you? Also since I thought it might have to do with issues with Dendrite homeserver I had added more details at: https://github.com/matrix-org/dendrite/issues/2495

jittygitty commented 2 years ago

@turt2live To summarize I have 10 DM (direct message) rooms under the "People" area in Element Desktop app. This Element Desktop user is signed in to my Dendrite homeserver. I can TEXT message back and forth to the DM rooms, but if I click on audio or video icon in desktop app for any of these 10, NOTHING happens.

All of the 10 DM rooms are connected to various users using Android Element App, some of them Signed in to Matrix.org and others signed in to my same Dendrite home server as the Desktop app user.

I CAN though initiate a call FROM a "few" of those 10 Android Element App users that I have the 10 DM rooms with. The ones that can NOT initiate a call, the android app puts up an error popup of "You cannot place a call with yourself". And under room setting it says "one person".

The ones that WORK and can initiate a call to the Desktop App, they say "2 people" in room settings, even if on one/some it shows only the current user/Admin once you click to see the users. But main thing is that if it says "one person" it won't work. But if says 2people, seems to work initiating call just fine.

As mentioned in https://github.com/matrix-org/dendrite/issues/2495 I also had trouble with "verification" of a user which I think further reinforces my point that somehow one of the users is not detected properly even though I can text/message with them fine while at same time verification won't work and nothing happens when I click on audio or video buttons in my Desktop app to audio or video call them.

jittygitty commented 2 years ago

@turt2live @dbkr UPDATE: OK from one of the Android App users that was getting the "You cannot place a call with yourself" and the voice and video buttons were light grey instead of solid, well I did a "Do an optimized init sync". And AFTER that:

  1. Room settings said 2people instead of "one" (though when clicking on it still only showed one inside, the actual user who was also Admin)
  2. The voice and video buttons turned SOLID GREEN and I was able to initiate calls to the Desktop App user.

BUT, the Desktop app user still can NOT initiate a call back to this android app user, when I press the voice or video buttons on Element DESKTOP App, same as before "nothing" happens and no error popup either.

Is there an equivalent "Do an optimized init sync", that I can do from the DESKTOP app?

jittygitty commented 2 years ago

@turt2live @dbkr Maybe I'm blind but been trying to find dev-mode or someway to get the "Do an optimized init sync" from the Desktop client (like I did on Android app) but can't seem to find it anywhere.

jittygitty commented 2 years ago

@turt2live UPDATE: I tried on another Android App user which again was part of those 10 DM rooms, and for this user also once I did the "Do an optimized init sync" (Dev tools enabled), the voice and video icons got solid green (and room settings said 2people instead of "one") and I was able to initiate calls to Desktop App user.

BUT, even though I clicked to ACCEPT the call on the Desktop App, the Android App kept on "ringing", and when I clicked hang-up on the Desktop App it had no effect on the Android App, it kept ringing on there. But if I click hang-up on the Android App (one who initiated call), then the Desktop App hangs itself up also.

Yet again, Text chat messages work perfectly fine between even these two users, both ways, even notifications work for both. So not sure why the init sync completely fixed on the other but not on this one.

Also, I just tried a LEGACY init sync, but no improvement to the above.

turt2live commented 2 years ago

sorry, I'm having a hard time following these updates. It sounds like your firewall is getting in the way, as mentioned by https://github.com/vector-im/element-web/issues/14788

We don't have an upload server for logs. The logs are exactly as detailed as we need them to be in order to troubleshoot issues with the app, so redacting them can interfere with our ability to solve the problem. Submitting the logs through the app only makes them accessible to the team - they won't be shared outside of us, and won't be visible from here either.

I believe the logs will be key to determining whether this is a firewall issue or not.

jittygitty commented 2 years ago

@turt2live App Firewall is completely off not running, also I completely disabled the Windows Firewall. There is no firewall issue causing this, on either side, not on android and not on Windows with the Desktop app. This is confirmed because as I said I had some Android App users voice call working fine to same Desktop.

For example, remember that I clearly said in previous message above ( https://github.com/vector-im/element-web/issues/22331#issuecomment-1138119804 ), that on one Android App installation simply doing the "optimized init sync", FIXED the issue of the "you cannot place a call with yourself" error popup, and I was able to then initiate audio call with desktop app and it worked just fine, so how can it be firewall?

It is only the Desktop that can't initiate a call to "any" of the 10 DM users, clicking audio/video does nothing.

The logs contain "Real Names" of people, there is no reason why redacting a name to USER1/USER2/USER3 would interfere at all with your diagnostics, if anything, wouldn't it make following the logs actually "EASIER"?

I also don't see why you would have to have the real domain name of a private homeserver when these logs contain diagnostics of users logged into same homeserver, so I don't see how changing name causes issues.

turt2live commented 2 years ago

When folks supply us redacted logs, they tend to over-redact the logs. If you're comfortable with uploading them in public to github, here would be the place. Otherwise we'll need them submitted via the in-app button please.

Your issue still sounds like a firewall issue because of how the code works. If it was truly a room where there's only one participant, the desktop app would tell you that. The button not working tells me it's network related, where that could be a firewall or other connectivity issue. You're adamant that it's not connectivity, so that leaves firewall.

The logs will confirm this for us. I can't stress enough just how important it is that we get logs for this issue if you expect resolution.

jittygitty commented 2 years ago

@turt2live Yes I agree it could be some network connectivity issue perhaps, I just didn't think it was firewall. But you do have a lot more knowledge than me how the code works and it seems now that I clarified messaging works but voice call doesn't and you think its some kind of network issue, then perhaps they use different code paths and one could fail while the other works. I was going to try and sign out and back in again, but perhaps I'll investigate some more and to be sure I'll 'uninstall' the application firewall completely.

To me it was strange though that at least from the Android App to the Desktop app, voice call was working (although initiated only from Android app) after doing the "optimized Init Sync" from the android app etc.

Posting logs on here might be fine, I just didn't understand what all those keys were, if any private or not etc.

jittygitty commented 2 years ago

@turt2live OK I've done my best to rule out "any" network issues. I also signed out and re-signed in to the Desktop App and that didn't make a difference either. To further rule out NETWORK issues I installed on a LAPTOP (relatively new one) where I had never installed any software "application" firewall and the Windows firewall was DISABLED on "all profiles/domains".

On this new system where I installed Desktop Element, I even tried connecting by ethernet to same network and ISP as the original one but then also by wifi to a completely SEPARATE "ISP". And either way internet worked and text/chat messaging worked but when I clicked voice icon or video icon, "NOTHING" happened.

So if you are SURE that there is "source code" that would force Desktop Element App to pop-up some error message like on Android, to the effect of "You cannot place a call with yourself", or you don't have required permission etc, then maybe you have a bug, or maybe that code is reliant upon "Homeserver" behaving also?

Here is the Dendrite homeserver version as per https://homeserver/_matrix/federation/v1/version {"server":{"version":"0.8.5+a53c9300","name":"Dendrite"}}

turt2live commented 2 years ago

I believe there might be a bug, but without logs it's impossible to investigate.

Please post when you've submitted logs.

t3chguy commented 2 years ago

So if you are SURE that there is "source code" that would force Desktop Element App to pop-up some error message like on Android, to the effect of "You cannot place a call with yourself", or you don't have required permission etc, then maybe you have a bug, or maybe that code is reliant upon "Homeserver" behaving also?

image image

Such modals definitely do exist

jittygitty commented 2 years ago

@turt2live You didn't answer if I should be weary of any 'keys' in the logs if posted here, or if they're all public.

Anyway I do see:

2022-05-25T18:32:22.151Z I MatrixClient sync state => %s ERROR
2022-05-25T18:32:25.151Z I Fetching new TURN credentials
2022-05-25T18:32:25.154Z E Failed to get TURN URIs request failed: CORS request rejected: https://srv.redacted.com/_matrix/client/r0/voip/turnServer
ConnectionError: request failed: CORS request rejected: https://srv.redacted.com/_matrix/client/r0/voip/turnServer
    at vector://vector/webapp/bundles/383bb6034cbef510f88e/vendors~init.js:2:872491
    at Object.callback (vector://vector/webapp/bundles/383bb6034cbef510f88e/vendors~init.js:2:872111)
    at u (vector://vector/webapp/bundles/383bb6034cbef510f88e/vendors~init.js:2:12151)
    at XMLHttpRequest.i.onreadystatechange (vector://vector/webapp/bundles/383bb6034cbef510f88e/vendors~init.js:2:11581)
2022-05-25T18:32:32.155Z I MatrixClient sync state => %s ERROR
jittygitty commented 2 years ago

@turt2live Full logs I took yesterday are in link attached. ElementLogsforTurt2live.txt

@t3chguy Thanks, but can you make images only show when clicking on link/attachment?

t3chguy commented 2 years ago

https://github.com/matrix-org/dendrite/blob/2258387d393426922344213948c6d814de53f465/clientapi/routing/voip.go#L33 Dendrite claims to support that API yet is rejecting the request

turt2live commented 2 years ago

Emailing the logs to us unfortunately won't work either - that goes to an entirely different team.

From the snippet you have posted though, there are sync state errors which mean not only is the voip request failing (hence the buttons doing nothing), but also that you have some underlying network issue.

Closing as an environmental problem.

jittygitty commented 2 years ago

@turt2live Is your organization so huge that a different team can't forward you an email? There are no "Environmental" errors unless you mean my "Dendrite Environment" or "Turn Server"? Or what do you mean by "underlying network issue" when absolutely everything else works perfectly fine on this same network etc? (And as I said I tried a fresh install on different laptop and even tested on completely separate ISP network.)

turt2live commented 2 years ago

We gave you multiple opportunities to share the logs with us in a way that is compatible with our security policies and workflow - emailing them to sales is neither of those.

I mean your local computer environment: your network appears disconnected or degraded or your homeserver is not configured correctly.

jittygitty commented 2 years ago

@turt2live I'm happy to honor your own "security policies", as I have some as well, I can email you to whatever website email address or contact form you wish, I saw support@matrix.org or security@matrix.org if the "Contact us" form at bottom of your https://element.io website where I emailed you was not a good place.

The server running Dendrite is in a datacenter without any firewall running and everything works fine on it. In fact as I said I have had successful audio/video calls through my server.

IN FACT, just RIGHT now I just did several AUDIO calls and couple VIDEO calls between two android phones in my hand, both connected to same Dendrite server in datacenter. But from my desktop app I can not do an audio call or a video call to those same android phones, when I click Audio or Video icon, "NOTHING" happens.

So if it was my local computer environment why did desktop app fail on two different computers, even connected to same and then different networks and even tried a different ISP, all failed on Desktop app, while I just tested from two android phones again and still works, audio and video?

The only thing I can think is an issue with Dendrite or a bug of sorts or some issue with my "ACCOUNT" logged into the desktop app. I will try logging in with a NEW fresh account into the desktop app. And if that works then would be likely something that got botched inside Dendrite or possibly can't rule out inside Desktop Client some issue. Anyway will update once I've had chance to try that.

turt2live commented 2 years ago

I've already explained where and how we can accept logs. Neither of the options are over email.

The log snippet you provided here shows that the issue is a network problem between your desktop and server - that could be a firewall, misconfiguration, temporary outage, or a wide variety of other issues. Your network issue is not isolated to calls either. The logs you provided say you're having much larger problems with your account's ability to sync up with the server, which further points to general network issues.

None of your symptoms point to a bug in Element or Dendrite: they point entirely to a network or communications issue between you and your server.

If you wish to further engage on this, please re-read the directions from past comments.

jittygitty commented 2 years ago

@turt2live The logs were in a "link" in the attachment I already attached here. The email I sent you was just your "password" to access the log download "link". How is it breaking your security just emailing you a password?

Also I hate repeating myself but I tested with a basically new laptop with fresh install of Desktop app, tested it on "same" network, and also on a different network/wifi and then on a whole different "ISP" network.

And yes its related only to calls in that I can TEXT/message with that same Desktop app to those DM rooms perfectly fine as I already mentioned. Its ONLY the audio/video call buttons that do "nothing" when clicked.

(And if it was server datacenter/network issue then the two android phones connected to same dendrite server shouldn't be able to have perfectly working audio/video which I mentioned in previous post, would they?)

I will re-read your directions, but I wish you would re-read what I said also since seems you missed my point.

turt2live commented 2 years ago

/me sighs

Please use the support rooms for support. I'm locking this as resolved.