#http.Server response error.

1 messages · Page 1 of 1 (latest)

simple tulip
#

I'm trying to write a response, but I think there's something wrong with how I'm creating my write buffer or the writer. This was using 0.15.1 version

while (true) {
            const client = listener.accept() catch |err| {
                std.log.err("Failed to accept connection: {}", .{err});
                continue;
            };
            defer client.stream.close();

            var reader_buffer: [4096]u8 = undefined;
            var writer_buffer: [8192]u8 = undefined;

            // Wrap the client stream in mutable reader and writer interfaces
            var stream_reader = client.stream.reader(&reader_buffer);
            const reader = stream_reader.interface();
            var writer = client.stream.writer(&writer_buffer);

            var http_server = http.Server.init(reader, &writer);

            while (true) {
                var request = try http_server.receiveHead();

                switch (request.head.method) {
                    .GET => {
                        request.respond("Hello World\n", .{
                            .status = .ok,
                            .extra_headers = &[_]http.Header{
                                .{ .name = "Content-Type", .value = "text/plain" },
                            },
                        });
                    },
                    else => {
                        try request.respond("Method not allowed", .{ .status = .method_not_allowed });
                        };
                    },
                }
            }
        }
frosty blade
#

Without knowing what the error you're actually getting it's hard to say.
That being said, I might be wrong here (I'm just looking at the docs), but as I understand it, http.server.init takes (in: *std.Io.Reader, out: *std.Io.Writer), but you are providing a std.net.Stream.Writer for out. Try &writer.interface?