typesafegithub / typesafegithub/github-workflows-kt

[Bug] Server failed on missing body length

Open
#2,368 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Kotlin
Stars
664
Forks
30
Avg merge
4d 19h
Merged PRs (30d)
5

Description

Component

Action

Not sure what triggered it, but see GET - //%20%20%20%20%22/wp-config.php.save%22,,/php-perf.php below.

Expected

No failure.

Actual

What happens instead?

Got this stack trace:

2026-06-24 21:35:39.628	
2026-06-24 19:35:39,628 <INFO > <eventLoopGroupProxy-4-5            > <[]> <{request-id=4jj9s36l5eqi6si}> <                        io.ktor.server.Application> 500 Internal Server Error: GET - //%20%20%20%20%22/wp-config.php.save%22,,/php-perf.php in 103ms
	
		2026-06-24 21:35:39.627	
	... 12 more
	
		2026-06-24 21:35:39.627	
	at io.ktor.http.cio.HttpBodyKt.parseHttpBody(HttpBody.kt:112)
	
		2026-06-24 21:35:39.627	
keep-alive should be disabled (connection: close)
	
		2026-06-24 21:35:39.627	
chunked transfer encoding should be used or
	
		2026-06-24 21:35:39.627	
Caused by: java.lang.IllegalStateException: Failed to parse request body: request body length should be specified,
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
	
		2026-06-24 21:35:39.627	
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	
		2026-06-24 21:35:39.627	
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	
		2026-06-24 21:35:39.627	
	at io.ktor.utils.io.ByteWriteChannelOperationsKt$writer$job$1.invokeSuspend(ByteWriteChannelOperations.kt:185)
	
		2026-06-24 21:35:39.627	
	at io.ktor.client.engine.cio.UtilsKt$readResponse$2$1$body$httpBodyParser$1.invoke(utils.kt)
	
		2026-06-24 21:35:39.627	
	at io.ktor.client.engine.cio.UtilsKt$readResponse$2$1$body$httpBodyParser$1.invoke(utils.kt)
	
		2026-06-24 21:35:39.627	
	at io.ktor.client.engine.cio.UtilsKt$readResponse$2$1$body$httpBodyParser$1.invokeSuspend(utils.kt:211)
	
		2026-06-24 21:35:39.627	
	at io.ktor.http.cio.HttpBodyKt.parseHttpBody(HttpBody.kt:120)
	
		2026-06-24 21:35:39.627	
	at io.ktor.utils.io.ByteWriteChannelOperationsKt.close(ByteWriteChannelOperations.kt:130)
	
		2026-06-24 21:35:39.627	
	at io.ktor.utils.io.ByteChannel.cancel(ByteChannel.kt:462)
	
		2026-06-24 21:35:39.627	
keep-alive should be disabled (connection: close)
	
		2026-06-24 21:35:39.627	
chunked transfer encoding should be used or
	
		2026-06-24 21:35:39.627	
io.ktor.utils.io.ClosedByteChannelException: Failed to parse request body: request body length should be specified,
	
		2026-06-24 21:35:39.627	
2026-06-24 19:35:39,627 <WARN > <DefaultDispatcher-worker-15        > <[]> <{}> <com.github.benmanes.caffeine.cache.LocalAsyncCache> Exception thrown during asynchronous load

Workaround, if exists

None/unknonw.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The failure reaches io.ktor.http.cio.HttpBodyKt.parseHttpBody at HttpBody.kt:112 and HttpBody.kt:120 while the bindings server handles the malformed GET shown in the report. Start by reproducing that request and tracing the request-body parsing path; done means it no longer produces the reported 500 response and stack trace.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
backend, networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.