diff --git a/turn/src/client/relay_conn.rs b/turn/src/client/relay_conn.rs index dd990a879..a4bb4303e 100644 --- a/turn/src/client/relay_conn.rs +++ b/turn/src/client/relay_conn.rs @@ -571,6 +571,17 @@ impl RelayConnInternal { let res = tr_res.msg; + if res.typ.class == CLASS_ERROR_RESPONSE { + let mut code = ErrorCodeAttribute::default(); + let result = code.get_from(&res); + if result.is_err() { + return Err(Error::Other(format!("{}", res.typ))); + } else if code.code == CODE_STALE_NONCE { + self.set_nonce_from_msg(&res); + return Err(Error::ErrTryAgain); + } + } + if res.typ != MessageType::new(METHOD_CHANNEL_BIND, CLASS_SUCCESS_RESPONSE) { return Err(Error::ErrUnexpectedResponse); }