BadVPN – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | process main { |
2 | getargs() args; |
||
3 | value(args) args; |
||
4 | |||
5 | num_different(args.length, "2") bad_args; |
||
6 | If (bad_args) { |
||
7 | println("bad arguments"); |
||
8 | exit("1"); |
||
9 | }; |
||
10 | |||
11 | args->get("0") addr_ip; |
||
12 | args->get("1") addr_port; |
||
13 | |||
14 | sys.listen({"tcp", {"ipv4", addr_ip, addr_port}}, "client_handler", {}) listener; |
||
15 | If (listener.is_error) { |
||
16 | println("failed to listen"); |
||
17 | exit("1"); |
||
18 | }; |
||
19 | |||
20 | println("listening"); |
||
21 | } |
||
22 | |||
23 | template client_handler { |
||
24 | to_string(_socket.client_addr) addr_str; |
||
25 | |||
26 | println("client ", addr_str, ": connected"); |
||
27 | rprintln("client ", addr_str, ": disconnected"); |
||
28 | |||
29 | _socket->write("This echo server is implemented in NCD!\n\n"); |
||
30 | |||
31 | backtrack_point() recv_point; |
||
32 | |||
33 | _socket->read() data; |
||
34 | If (data.not_eof) { |
||
35 | _socket->write(data); |
||
36 | recv_point->go(); |
||
37 | }; |
||
38 | |||
39 | _socket->close(); |
||
40 | } |