The W3C ECMAScript API defines an event to handle issues during the ICE gathering process. But should your application handles these errors ? And if yes, what to do?
Internet surfing has become essential to our personal, social, and professional lives. We must ensure for ourselves hassle-free internet surfing. Megapersonal Error 701 stops one from accessing their personal information and may also shut down one’s system completely.
Megaperonal error is the type of malfunction you experience when you attempt to access your private data on the internet. This error also puts you at a halt for surfing the internet adequately.
This blog will enable you to know different reasons for the occurrence of this error. Also, we will try to provide you with solutions for this problem so you can resume smooth and stress-free internet surfing.
Status codes and their use in gRPC
gRPC uses a set of well defined status codes as part of the RPC API. These
statuses are defined as such:
All RPCs started at a client return a status object composed of an integer
code and a string message. The server-side can choose the status it
returns for a given RPC.
The gRPC client and server-side implementations may also generate and
return status on their own when errors happen. Only a subset of
the pre-defined status codes are generated by the gRPC libraries. This
allows applications to be sure that any other code it sees was actually
returned by the application (although it is also possible for the
server-side to return one of the codes generated by the gRPC libraries).
Applications that may wish to retry failed RPCs must decide which status codes on which to retry. As shown in the table above, the gRPC library can generate the same status code for different cases. Server applications can also return those same status codes. Therefore, there is no fixed list of status codes on which it is appropriate to retry in all applications. As a result, individual applications must make their own determination as to which status codes should cause an RPC to be retried.
Below mentioned are some possible solutions to this problem:
Freeing Up of System Drive
The megapersonal error code 701 may also be encountered if there is low storage space on your system. If such is the case, this error can easily be fixed by freeing up extra disk space. Below mentioned is a step-by-step guide on how to free up disk space on your computer/PC:
Repairing of Corrupted Registry
Detailed steps are mentioned below to help you learn how to clean boot your system:
Suppose none of the above methods work to fix the Megapersonal error 701 error; you can also try to take your laptop and get it checked by a professional technician. They will be able to identify any issue or problem with your laptop and fix it in no time.
If this error occurs, you can face many problems such as system crashes, BSODs, or system unresponsiveness. Below mentioned are some reasons why you might be experiencing this error:
Some other documents describe ICE errors such as:
When dealing with mobility, ICE errors are described in document Mobility with Traversal Using Relays around NAT (TURN), which describes a new error code in section 3.4 New STUN Error Response Code
The document Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations describes lists some new error codes in section 6.3 New STUN Error Codes
The document Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal, describes an additional new ICE error code when in that situation, in section 16.2 New Error-Response Codes
The icecandidateerror event and the RTCPeerConnectionEceErrorEvent interface are described in section 4.8.3 RTCPeerConnectionIceErrorEvent
The value of the errorCode attribute points to the IANA document that summarizes these codes STUN Error Codes. For sure, the ECMAScript API only transmits the ICE errors coming from the STUN/TURN servers.
But additionally, the W3C defines a new error code when no host candidate can reach the server:
Note: That specific event is generated by the browser not by the STUN & TURN servers
When dealing with an STUN server, ICE errors are documented in the IETF Proposed Standard document: Session Traversal Utilities for NAT (STUN). Error codes are described in section 14.8 ERROR-CODE
Note: This document obsoletes the RFC 5389
Did I make a mistake ?
During the ICE candidate gathering process an error could occur when your browser is exchanging information with the STUN and TURN servers.
host lookup received error
For that the RTCPeerConnection fires the event onicecandidateerror.
Note: The description of the ICE errors are defined in several documents. But basically, STUN error code are listed in that main document Session Traversal Utilities for NAT (STUN) Parameters that is the umbrella of all other documents.
But in that document, additional codes are defined that can still be fired by STUN & TURN servers.
Deducing from the errors listed previously, 2 main categories emerge:
Here is what you can add to your code to separate these 2 kinds of errors
But then what ? What to do once the application catch an ICE error ? 🙂
Unfortunately, listening to the event icegatheringstatechange does not help because once finished, the gathering state just moves to state complete which means that this step is finished.
The RTCPeerConnection offers the possibility to listen to the event iceconnectionstatechange. If a connection can be established between a candidate pair (which means a local candidate and a remote candidate), the state should move to connected or completed.
But the final assessment should be done by listening to the event connectionstatechange and by checking the state reached. If the connection is successful, state should be connected.
That said, ICE errors are very rare and uncommon in the majority of cases. When the STUN & TURN servers are up and correctly configured and when the application sends the correct URLs and credentials, it should work in 99% of the cases. So, as seen in the previous paragraph, your application could stay simple without having to handle these different events specifically. It’s better to invest on monitoring your STUN & TURN equipments to detect any crashes.
Only host candidates received
If we suppose that the STUN & TURN servers are accessible from the browser because they use common ports and protocols, the minimal case that needs to be handled correctly from the application side is when only host candidates have been gathered. Because it can affect the call if the participants are not on the same network.
2 main issues could be at the origin of this result:
In order to discard the first possibility and confirm possibly the second, a quick test can be done by using the WebRTC sample Tickle ICE. If more candidates appear, the conclusion could be that the problem is in your code and not with the configuration of the STUN & TURN servers.
If there is still only host candidates, you can have a look to the icecandidateerror to see if there are interesting information. Sadly, depending on the browser used, it will not help you to understand the issue.
So, finally, wa have to deal with that result: The browser only got host candidates and that’s all! So, the application has to deduce that the STUN & TURN servers have an issue.
Then when in that state, your application has the possibility to disable the call button and inform that the service is unavailable.
No relay candidates received
If you have configured a Coturn server, your application expects to receive srflx and relay candidates.
One case that can happens is if the TURN credentials are not the right ones. How can you detect that case ?
In fact, two things can help you to detect that case:
Then, as for the previous paragraph, this is up to your application to adapt.
Special case 701
That case is not easy to handle and understand but hopefully in some cases, impact is minor and don’t really avoid receiving the candidates.
First, as mentioned previously, that error is generated by the browser and at this time of writing only Chrome generates it.
As you can see, that error is issued in some different cases. In my case, I only received TURN host lookup received error which lets my application grabs relay and srflx candidates without problems in Chrome, Firefox and Safari. So it’s ok today and I hope this will continue to be the case.
Note: There is still an opened Github ticket in the Coturn repository limited to the case TURN allocate request timed out..
When dealing with a TURN server, these errors are document in the IETF Proposed Standard document: Traversal Using Relays around NAT (TURN) which is the Relay Extensions to Session Traversal Utilities for NAT (STUN). Error codes are described in section 19 STUN Error Response Codes
Note: This document obsoletes the RFC 5766
And you ?
How did you manage the ICE errors coming into your web application ? Did you take care about them or simply forget them ?