File tree Expand file tree Collapse file tree 1 file changed +16
-2
lines changed
Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -1334,9 +1334,23 @@ pub fn ThreadSafeTransport(config: ThreadSafeTransportConfig) type {
13341334 };
13351335}
13361336
1337- pub fn readJsonMessage (reader : * std.io.Reader , allocator : std.mem.Allocator ) (std .io .Reader .ReadAllocError || BaseProtocolHeader .ParseError )! []u8 {
1337+ pub fn readJsonMessage (
1338+ reader : * std.io.Reader ,
1339+ allocator : std.mem.Allocator ,
1340+ ) (std .io .Reader .Error || std .mem .Allocator .Error || BaseProtocolHeader .ParseError )! []u8 {
13381341 const header : BaseProtocolHeader = try .parse (reader );
1339- return try reader .readAlloc (allocator , header .content_length );
1342+
1343+ // Use `readAlloc` once https://github.com/ziglang/zig/issues/24443 has been resolved:
1344+ // return try reader.readAlloc(allocator, header.content_length);
1345+
1346+ const json_message = try allocator .alloc (u8 , header .content_length );
1347+ errdefer allocator .free (json_message );
1348+ var writer : std.io.Writer = .fixed (json_message );
1349+ reader .streamExact (& writer , json_message .len ) catch | err | switch (err ) {
1350+ error .ReadFailed , error .EndOfStream = > | e | return e ,
1351+ error .WriteFailed = > unreachable , // fixed buffer
1352+ };
1353+ return json_message ;
13401354}
13411355
13421356test readJsonMessage {
You can’t perform that action at this time.
0 commit comments