errdefer posix.close(client_socket);
var event = linux.epoll_event{ .events = linux.EPOLL.IN, .data = .{ .fd = client_socket } };
try posix.epoll_ctl(self.efd, linux.EPOLL.CTL_ADD, client_socket, &event);
- var addr: std.c.sockaddr = undefined;
+ var addr: std.os.linux.sockaddr = undefined;
var addr_size: std.c.socklen_t = @sizeOf(std.c.sockaddr);
_ = std.c.getpeername(client_socket, &addr, &addr_size);
- std.debug.print("new connection from {}\n", .{addr});
+ std.debug.print("new connection from {} [{}/{}]\n", .{ addr, @sizeOf(std.os.linux.sockaddr), addr_size });
} else {
var closed = false;
var req = Request{ .fd = ready_socket };
read += newly_read;
if (newly_read == 0)
break;
+ std.debug.print("[[{}/{}]]\n", .{ newly_read, read });
+ std.time.sleep(100000000);
}
if (read == 0) {
closed = true;
pub fn add_header(self: *Response, name: []const u8, value: anytype) !void {
const header = try self.extra_headers.addOne();
try header.name.writer().writeAll(name);
- if (@typeInfo(@TypeOf(value)).Struct.fields.len < 2 or @sizeOf(@TypeOf(value[1])) == 0) {
+ if (@typeInfo(@TypeOf(value)).@"struct".fields.len < 2 or @sizeOf(@TypeOf(value[1])) == 0) {
try header.value.writer().writeAll(value[0]);
} else {
try std.fmt.format(header.value.writer(), value[0], value[1]);
pub fn write(self: *Response, comptime fmt: []const u8, args: anytype) !void {
const writer = self.stream_body.writer();
- if (@sizeOf(@TypeOf(args)) == 0) {
+ if (@typeInfo(@TypeOf(args)).@"struct".fields.len == 0) {
try writer.writeAll(fmt);
} else {
try std.fmt.format(writer, fmt, args);