libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit b4942a1880831642c87d43dc4de711bb87b5503c
parent 2b788ab487cd647667edbfa2f30151af46d4f902
Author: ms <ms@taler.net>
Date:   Wed,  6 Oct 2021 14:39:54 +0200

Unix domain socket proxy: fix payload read/write.

Diffstat:
Mutil/src/main/kotlin/UnixDomainSocket.kt | 10++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/util/src/main/kotlin/UnixDomainSocket.kt b/util/src/main/kotlin/UnixDomainSocket.kt @@ -5,6 +5,8 @@ import io.ktor.http.HttpMethod import io.ktor.server.engine.* import io.ktor.server.testing.* import io.netty.bootstrap.ServerBootstrap +import io.netty.buffer.ByteBufInputStream +import io.netty.buffer.Unpooled import io.netty.channel.* import io.netty.channel.epoll.EpollEventLoopGroup import io.netty.channel.epoll.EpollServerDomainSocketChannel @@ -72,7 +74,7 @@ class LibeufinHttpHandler : SimpleChannelInboundHandler<FullHttpRequest>() { method = HttpMethod(msg.method().name()) uri = msg.uri() version = httpVersion.text() - setBody(msg.content().array()) + setBody(ByteBufInputStream(msg.content()).readAllBytes()) } val statusCode: Int = call.response.status()?.value ?: throw UtilError( HttpStatusCode.InternalServerError, @@ -80,7 +82,11 @@ class LibeufinHttpHandler : SimpleChannelInboundHandler<FullHttpRequest>() { ec = null // FIXME: to be defined. ) // Responding with Netty API. - val response = DefaultFullHttpResponse(httpVersion, HttpResponseStatus.valueOf(statusCode)) + val response = DefaultFullHttpResponse( + httpVersion, + HttpResponseStatus.valueOf(statusCode), + Unpooled.wrappedBuffer(call.response.byteContent ?: ByteArray(0)) + ) call.response.headers.allValues().forEach { s, list -> response.headers().set(s, list.joinToString()) // joinToString() separates with ", " by default. }