- if(cl->reqlen)
- {
- if(sscanf(cl->buffer, "%d", &request) == 1)
- {
- if(request_handlers[request] == NULL)
- {
- syslog(LOG_ERR, "Unknown request: %s", cl->buffer);
- return 0;
- }
-
- if(debug_lvl > 3)
- syslog(LOG_DEBUG, "Got request: %s", cl->buffer);
-
- request_handlers[request](cl);
- }
- else
- {
- syslog(LOG_ERR, "Bogus data received: %s", cl->buffer);
- }
-
- cl->buflen -= cl->reqlen;
- memmove(cl->buffer, cl->buffer + cl->reqlen, cl->buflen);
- oldlen = 0;
- }
- else
- {
- break;
- }
- }
-cp
- return 0;
-}
-
-/*
- check all connections to see if anything
- happened on their sockets
-*/
-void check_network_activity(fd_set *f)
-{
- conn_list_t *p;
- int x, l = sizeof(x);
-cp
- for(p = conn_list; p != NULL; p = p->next)
- {
- if(p->status.remove)
- continue;
-
- if(p->status.dataopen)
- if(FD_ISSET(p->socket, f))
- {
- /*
- The only thing that can happen to get us here is apparently an
- error on this outgoing(!) UDP socket that isn't immediate (i.e.
- something that will not trigger an error directly on send()).
- I've once got here when it said `No route to host'.
- */
- getsockopt(p->socket, SOL_SOCKET, SO_ERROR, &x, &l);
- syslog(LOG_ERR, "Outgoing data socket error: %s", sys_errlist[x]);
- terminate_connection(p);
- return;
- }
-
- if(p->status.meta)
- if(FD_ISSET(p->meta_socket, f))
- if(handle_incoming_meta_data(p) < 0)
- {
- terminate_connection(p);
- return;
- }
- }
-
- if(FD_ISSET(myself->socket, f))
- handle_incoming_vpn_data(myself);
-
- if(FD_ISSET(myself->meta_socket, f))
- handle_new_meta_connection(myself);
-cp