private void PrepareResponse(Request request) { // consecutive response require new MID that must be stored for RST matching if (request.Response.ID == Message.InvalidID) { request.Response.ID = MessageLayer.NextMessageID(); } // 16-bit second counter Int32 secs = (Int32)((DateTime.Now - request.StartTime).TotalMilliseconds / 1000) & 0xFFFF; request.Response.SetOption(Option.Create(OptionType.Observe, secs)); // store ID for RST matching UpdateLastMessageID(request.PeerAddress.ToString(), request.UriPath, request.Response.ID); }