X-Git-Url: https://gitweb.ps.run/zighttp/blobdiff_plain/be44ead60d7aaca2d965e5ef6a41af424af4bf65..9a88fec57f4fa87cae6769ee0f992fbf00b8becd:/src/http.zig diff --git a/src/http.zig b/src/http.zig index b6c4cf5..c14f16d 100644 --- a/src/http.zig +++ b/src/http.zig @@ -59,11 +59,21 @@ pub const Server = struct { 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_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}); } else { var closed = false; var req = Request{ .fd = ready_socket }; - const read = posix.read(ready_socket, buf) catch 0; + var read: usize = 0; + while (true) { + const newly_read = posix.read(ready_socket, buf[read..]) catch 0; + read += newly_read; + if (newly_read == 0) + break; + } if (read == 0) { closed = true; } else { @@ -109,6 +119,7 @@ pub const Request = struct { body: ?[]u8 = null, pub fn parse(self: *Request, buf: []u8) bool { + std.debug.print("buf: {s}\n", .{buf}); var state: u8 = 0; var start: u32 = 0;