private void SendChangeCipherSpec(Session session) { int size = 1; int responseSize = DTLSRecord.RECORD_OVERHEAD + size; byte[] response = new byte[responseSize]; DTLSRecord record = new DTLSRecord { RecordType = TRecordType.ChangeCipherSpec, Epoch = session.Epoch, SequenceNumber = session.NextSequenceNumber(), Fragment = new byte[size] }; record.Fragment[0] = 1; if (session.Version != null) { record.Version = session.Version; } using (MemoryStream stream = new MemoryStream(response)) { record.Serialise(stream); } SocketAsyncEventArgs parameters = new SocketAsyncEventArgs() { RemoteEndPoint = session.RemoteEndPoint }; parameters.SetBuffer(response, 0, responseSize); _Socket.SendToAsync(parameters); session.ChangeEpoch(); }
private void SendChangeCipherSpec(Session session) { int size = 1; int responseSize = DTLSRecord.RECORD_OVERHEAD + size; byte[] response = new byte[responseSize]; DTLSRecord record = new DTLSRecord(); record.RecordType = TRecordType.ChangeCipherSpec; record.Epoch = session.Epoch; record.SequenceNumber = session.NextSequenceNumber(); record.Fragment = new byte[size]; record.Fragment[0] = 1; if (session.Version != null) record.Version = session.Version; using (MemoryStream stream = new MemoryStream(response)) { record.Serialise(stream); } SocketAsyncEventArgs parameters = new SocketAsyncEventArgs() { RemoteEndPoint = session.RemoteEndPoint }; parameters.SetBuffer(response, 0, responseSize); _Socket.SendToAsync(parameters); session.ChangeEpoch(); }