… | |
… | |
138 | * this face. Face 0 is sent to the client to say clear |
138 | * this face. Face 0 is sent to the client to say clear |
139 | * face information. |
139 | * face information. |
140 | */ |
140 | */ |
141 | faces_sent[0] = NS_FACESENT_FACE; |
141 | faces_sent[0] = NS_FACESENT_FACE; |
142 | |
142 | |
143 | // socket I/O is low priority |
|
|
144 | // we prefer to have the server run instead of handling client requests |
|
|
145 | socket_ev.prio (PE_PRIO_NORMAL + 1); |
143 | socket_ev.prio (PE_PRIO_NORMAL); |
146 | socket_ev.fd (fd); |
144 | socket_ev.fd (fd); |
147 | socket_ev.poll (PE_R); |
145 | socket_ev.poll (PE_R); |
148 | |
146 | |
149 | // command handling is even lower priority |
|
|
150 | // that way no client can monopolise the server |
|
|
151 | cmd_ev.prio (PE_PRIO_NORMAL + 2); |
147 | cmd_ev.prio (PE_PRIO_NORMAL); |
152 | |
148 | |
153 | // initialisation done, kick it! |
149 | // initialisation done, kick it! |
154 | send_packet_printf ("version %d %d %s\n", VERSION_CS, VERSION_SC, VERSION_INFO); |
150 | send_packet_printf ("version %d %d %s\n", VERSION_CS, VERSION_SC, VERSION_INFO); |
155 | flush (); |
151 | flush (); |
156 | |
152 | |
… | |
… | |
252 | } |
248 | } |
253 | |
249 | |
254 | client * |
250 | client * |
255 | client::create (int fd, const char *peername) |
251 | client::create (int fd, const char *peername) |
256 | { |
252 | { |
257 | if (checkbanned (NULL, peername)) |
|
|
258 | { |
|
|
259 | LOG (llevInfo, "Banned host tried to connect: [%s]\n", peername); |
|
|
260 | return 0; |
|
|
261 | } |
|
|
262 | else |
|
|
263 | { |
|
|
264 | client *ns = new client (dup (fd), peername); |
253 | client *ns = new client (dup (fd), peername); |
265 | |
|
|
266 | ns->instantiate (); // effectively a nop right now |
254 | ns->instantiate (); // effectively a nop right now |
267 | |
|
|
268 | INVOKE_CLIENT (CONNECT, ns); |
255 | INVOKE_CLIENT (CONNECT, ns); |
269 | |
|
|
270 | return ns; |
256 | return ns; |
271 | } |
|
|
272 | } |
257 | } |
273 | |
258 | |