23 Value backlogv = pop_value(vm);
28 fprintf(stderr,
"Runtime type error: tcp_listen expects (int port, int backlog)\n");
34 int port = (int)
portv.i;
35 int backlog = (int)backlogv.
i;
36 int s = socket(AF_INET, SOCK_STREAM, 0);
39 setsockopt(
s, SOL_SOCKET, SO_REUSEADDR, &yes,
sizeof(yes));
40 struct sockaddr_in addr;
41 memset(&addr, 0,
sizeof(addr));
42 addr.sin_family = AF_INET;
43 addr.sin_addr.s_addr = htonl(INADDR_ANY);
44 addr.sin_port = htons((uint16_t)port);
45 if (bind(
s, (
struct sockaddr *)&addr,
sizeof(addr)) == 0) {
46 if (listen(
s, backlog > 0 ? backlog : 1) == 0) {
push_value(vm, make_int(fd > 0 ? fd :0))
Tagged union representing a Fun value.
Value make_int(int64_t v)
Construct a Value representing a 64-bit integer.