C#: receipt ids capped at 256 bytes and held as digests; limit refusals remembered, no slot freed; required fields refused with fixed text; RUDP server advertises no receipt frames
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
541d734675
commit
c4d1efe000
4 changed files with 360 additions and 40 deletions
|
|
@ -416,9 +416,17 @@ namespace GameCult.Networking
|
|||
private async Task HandlePutAsync(CultNetDocumentPutRawMessage message, CultNetServerPeer peer)
|
||||
{
|
||||
var write = BeginReceipted(peer, "put", message.MessageId, message.Document?.SchemaId, message.Document?.RecordKey, message.Document?.Payload);
|
||||
if (write != null && !write.HasId)
|
||||
var idRefusal = write?.IdRefusal;
|
||||
if (idRefusal != null)
|
||||
{
|
||||
write.Refused(CultNetErrorMessage.ForMessageInvalid("messageId", "a write needs a messageId"));
|
||||
write!.Refused(idRefusal);
|
||||
return;
|
||||
}
|
||||
|
||||
var missing = message.Document == null ? "document" : message.Document.SchemaId == null ? "schemaId" : null;
|
||||
if (missing != null)
|
||||
{
|
||||
Refuse(peer, write, CultNetErrorMessage.ForMessageInvalid(missing, $"{missing} is required"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -484,9 +492,16 @@ namespace GameCult.Networking
|
|||
private async Task HandleDeleteAsync(CultNetDocumentDeleteMessage message, CultNetServerPeer peer)
|
||||
{
|
||||
var write = BeginReceipted(peer, "delete", message.MessageId, message.SchemaId, message.RecordKey, null);
|
||||
if (write != null && !write.HasId)
|
||||
var idRefusal = write?.IdRefusal;
|
||||
if (idRefusal != null)
|
||||
{
|
||||
write.Refused(CultNetErrorMessage.ForMessageInvalid("messageId", "a write needs a messageId"));
|
||||
write!.Refused(idRefusal);
|
||||
return;
|
||||
}
|
||||
|
||||
if (message.SchemaId == null)
|
||||
{
|
||||
Refuse(peer, write, CultNetErrorMessage.ForMessageInvalid("schemaId", "schemaId is required"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue