HRESULT CStunClientTestBase::StartBindingRequest(CStunMessageBuilder& builder) { builder.AddBindingRequestHeader(); if (IsTransactionIdValid(_transid)) { builder.AddTransactionId(_transid); } else { builder.AddRandomTransactionId(&_transid); } return S_OK; }
HRESULT CTestClientLogic::ValidateBindingRequest(CRefCountedBuffer& spMsg, StunTransactionId* pTransId) { HRESULT hr = S_OK; CStunMessageReader reader; CStunMessageReader::ReaderParseState state; state = reader.AddBytes(spMsg->GetData(), spMsg->GetSize()); ChkIfA(state != CStunMessageReader::BodyValidated, E_UNEXPECTED); ChkIfA(reader.GetMessageType() != StunMsgTypeBinding, E_UNEXPECTED); reader.GetTransactionId(pTransId); ChkIfA(false == IsTransactionIdValid(*pTransId), E_FAIL); Cleanup: return hr; }