private int HandleSetLinkInfo(byte[] buffer, int len) { fixed(byte *p = buffer) { SetLinkInfo *o = (SetLinkInfo *)p; if (len < 24) { return(-2201); } if (ntohs(o->Length) < 24) { return(-2201); } if (15 != ntohs(o->ControlMessageType)) { return(-2202); } RasdialClient.SendACCM = o->SendACCM; RasdialClient.ReceiveACCM = o->ReceiveACCM; } return(0); }
private int ProcessReceived(byte[] buffer, int len) { if (buffer == null) { CloseOrAbort(true); return(-2001); } if (buffer.Length <= 0) { CloseOrAbort(true); return(-2002); } if (len == 0) { CloseOrAbort(false); return(-2003); } else if (len < 0) { CloseOrAbort(true); return(-2004); } if (m_bState == 0) { return(HandleConnectionRequest(buffer, len)); } else if (m_bState == 1) { return(HandleOutgoingCallRequest(buffer, len)); } else if (m_bState == 2) { int HR = HandleSetLinkInfo(buffer, len); m_bState++; return(HR); } else if (m_bState == 3) { int HR = HandleSetLinkInfo(buffer, len); fixed(byte *p = buffer) { SetLinkInfo *o = (SetLinkInfo *)p; o->PeersCallID = ntohs(RasdialClient.PeersCallId); o->Reserved0 = ntohs(RasdialClient.SelfCallId); } SendMessage(buffer, 0, sizeof(SetLinkInfo)); m_bState++; return(HR); } else { return(0); } }