diff --git a/src/gmrequest.c b/src/gmrequest.c index 9b9d2659..72270f88 100644 --- a/src/gmrequest.c +++ b/src/gmrequest.c @@ -267,6 +267,13 @@ static int processIncomingData_GmRequest_(iGmRequest *d, const iBlock *data) { checkServerCertificate_GmRequest_(d); iRelease(metaPattern); } + else if (size_String(&resp->meta) > 2048) { + /* The Gemini "tech overview" caps at 1024 bytes; use 2048 for generosity */ + clear_String(&resp->meta); + resp->statusCode = invalidHeader_GmStatusCode; + d->state = finished_GmRequestState; + notifyDone = iTrue; + } } else if (d->state == receivingBody_GmRequestState) { append_Block(&resp->body, data);