|
|
@@ -146,19 +146,32 @@ export default class XMPP {
|
|
146
|
146
|
} else if (status === Strophe.Status.DISCONNECTED) {
|
|
147
|
147
|
// Stop ping interval
|
|
148
|
148
|
this.connection.ping.stopInterval();
|
|
|
149
|
+ const wasIntentionalDisconnect = this.disconnectInProgress;
|
|
|
150
|
+ const errMsg = msg ? msg : this.lastErrorMsg;
|
|
149
|
151
|
this.disconnectInProgress = false;
|
|
150
|
152
|
if (this.anonymousConnectionFailed) {
|
|
151
|
153
|
// prompt user for username and password
|
|
152
|
|
- this.eventEmitter.emit(JitsiConnectionEvents.CONNECTION_FAILED,
|
|
|
154
|
+ this.eventEmitter.emit(
|
|
|
155
|
+ JitsiConnectionEvents.CONNECTION_FAILED,
|
|
153
|
156
|
JitsiConnectionErrors.PASSWORD_REQUIRED);
|
|
154
|
157
|
} else if(this.connectionFailed) {
|
|
155
|
|
- this.eventEmitter.emit(JitsiConnectionEvents.CONNECTION_FAILED,
|
|
|
158
|
+ this.eventEmitter.emit(
|
|
|
159
|
+ JitsiConnectionEvents.CONNECTION_FAILED,
|
|
|
160
|
+ JitsiConnectionErrors.OTHER_ERROR, errMsg);
|
|
|
161
|
+ } else if (!wasIntentionalDisconnect) {
|
|
|
162
|
+ // XXX if Strophe drops the connection while not being asked to,
|
|
|
163
|
+ // it means that most likely some serious error has occurred.
|
|
|
164
|
+ // One currently known case is when a BOSH request fails for
|
|
|
165
|
+ // more than 4 times. The connection is dropped without
|
|
|
166
|
+ // supplying a reason(error message/event) through the API.
|
|
|
167
|
+ logger.error("XMPP connection dropped!");
|
|
|
168
|
+ this.eventEmitter.emit(
|
|
|
169
|
+ JitsiConnectionEvents.CONNECTION_FAILED,
|
|
156
|
170
|
JitsiConnectionErrors.OTHER_ERROR,
|
|
157
|
|
- msg ? msg : this.lastErrorMsg);
|
|
|
171
|
+ errMsg ? errMsg : 'connection-dropped-error');
|
|
158
|
172
|
} else {
|
|
159
|
173
|
this.eventEmitter.emit(
|
|
160
|
|
- JitsiConnectionEvents.CONNECTION_DISCONNECTED,
|
|
161
|
|
- msg ? msg : this.lastErrorMsg);
|
|
|
174
|
+ JitsiConnectionEvents.CONNECTION_DISCONNECTED, errMsg);
|
|
162
|
175
|
}
|
|
163
|
176
|
} else if (status === Strophe.Status.AUTHFAIL) {
|
|
164
|
177
|
// wrong password or username, prompt user
|