HRESULT CStunClientTestBase::StartBindingRequest(CStunMessageBuilder& builder)
{
    builder.AddBindingRequestHeader();

    if (IsTransactionIdValid(_transid))
    {
        builder.AddTransactionId(_transid);
    }
    else
    {
        builder.AddRandomTransactionId(&_transid);
    }
    return S_OK;
}
Esempio n. 2
0
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;
}