Chromium Code Reviews| Index: remoting/protocol/jingle_session.cc |
| diff --git a/remoting/protocol/jingle_session.cc b/remoting/protocol/jingle_session.cc |
| index 8a24662699779189f62a957cdc984fa73d5ab6e0..69c594bab92e5336170748137314ef77df6839ad 100644 |
| --- a/remoting/protocol/jingle_session.cc |
| +++ b/remoting/protocol/jingle_session.cc |
| @@ -245,13 +245,12 @@ void JingleSession::Close(protocol::ErrorCode error) { |
| reason = JingleMessage::SUCCESS; |
| break; |
| case SESSION_REJECTED: |
| + reason = JingleMessage::DECLINE; |
| case AUTHENTICATION_FAILED: |
| reason = JingleMessage::DECLINE; |
| break; |
| case INVALID_ACCOUNT: |
| - // TODO(zijiehe): Instead of using SECURITY_ERROR Jingle reason, add a |
| - // new tag under crd namespace to export detail error reason to client. |
| - reason = JingleMessage::SECURITY_ERROR; |
| + reason = JingleMessage::DECLINE; |
|
Sergey Ulanov
2016/06/07 16:22:23
This is the same as the case above, so you can jus
Hzj_jie
2016/06/07 19:29:57
Done.
|
| break; |
| case INCOMPATIBLE_PROTOCOL: |
| reason = JingleMessage::INCOMPATIBLE_PARAMETERS; |
| @@ -272,6 +271,7 @@ void JingleSession::Close(protocol::ErrorCode error) { |
| JingleMessage message(peer_address_, JingleMessage::SESSION_TERMINATE, |
| session_id_); |
| message.reason = reason; |
| + message.error_code = error; |
| SendMessage(message); |
| } |
| @@ -481,37 +481,43 @@ void JingleSession::OnTerminate(const JingleMessage& message, |
| reply_callback.Run(JingleMessageReply::NONE); |
| - switch (message.reason) { |
| - case JingleMessage::SUCCESS: |
| - if (state_ == CONNECTING) { |
| - error_ = SESSION_REJECTED; |
| - } else { |
| - error_ = OK; |
| - } |
| - break; |
| - case JingleMessage::DECLINE: |
| - error_ = AUTHENTICATION_FAILED; |
| - break; |
| - case JingleMessage::SECURITY_ERROR: |
| - error_ = INVALID_ACCOUNT; |
| - break; |
| - case JingleMessage::CANCEL: |
| - error_ = HOST_OVERLOAD; |
| - break; |
| - case JingleMessage::EXPIRED: |
| - error_ = MAX_SESSION_LENGTH; |
| - break; |
| - case JingleMessage::INCOMPATIBLE_PARAMETERS: |
| - error_ = INCOMPATIBLE_PROTOCOL; |
| - break; |
| - case JingleMessage::FAILED_APPLICATION: |
| - error_ = HOST_CONFIGURATION_ERROR; |
| - break; |
| - case JingleMessage::GENERAL_ERROR: |
| - error_ = CHANNEL_CONNECTION_ERROR; |
| - break; |
| - default: |
| - error_ = UNKNOWN_ERROR; |
| + error_ = message.error_code; |
| + if (error_ == UNKNOWN_ERROR) { |
| + // For legacy hosts, which do not provide message.error_code. |
|
Sergey Ulanov
2016/06/07 16:22:23
This code is not specific to client, so needs to b
Hzj_jie
2016/06/07 19:29:57
Done.
|
| + switch (message.reason) { |
| + case JingleMessage::SUCCESS: |
| + if (state_ == CONNECTING) { |
| + error_ = SESSION_REJECTED; |
| + } else { |
| + error_ = OK; |
| + } |
| + break; |
| + case JingleMessage::DECLINE: |
| + error_ = AUTHENTICATION_FAILED; |
| + break; |
| + case JingleMessage::CANCEL: |
| + error_ = HOST_OVERLOAD; |
| + break; |
| + case JingleMessage::EXPIRED: |
| + error_ = MAX_SESSION_LENGTH; |
| + break; |
| + case JingleMessage::INCOMPATIBLE_PARAMETERS: |
| + error_ = INCOMPATIBLE_PROTOCOL; |
| + break; |
| + case JingleMessage::FAILED_APPLICATION: |
| + error_ = HOST_CONFIGURATION_ERROR; |
| + break; |
| + case JingleMessage::GENERAL_ERROR: |
| + error_ = CHANNEL_CONNECTION_ERROR; |
| + break; |
| + default: |
| + error_ = UNKNOWN_ERROR; |
| + } |
| + } else if (error_ == SESSION_REJECTED) { |
| + // For backward compatibility, we still use AUTHENTICATION_FAILED for |
| + // SESSION_REJECTED error. |
| + // TODO(zijiehe): Handle SESSION_REJECTED error in WebApp. |
|
Sergey Ulanov
2016/06/07 16:22:23
Please file a bug for this.
Hzj_jie
2016/06/07 19:29:57
Done.
|
| + error_ = AUTHENTICATION_FAILED; |
| } |
| if (error_ != OK) { |