- /* At least at one of the sockets something interesting happened */
- foreach ($read as $i => $sock) {
- if ($sock === $list) {
- printf("NUOVA CONNEX\n");
- $new_unix = stream_socket_accept($list);
- $stream_info = "";
- if (($new_socket = ancillary_getstream($new_unix, $stream_info)) !== FALSE) {
- printf("RECEIVED HEADER:\n%s", $stream_info);
- $m = spu_process_info($stream_info, $header, $get, $post);
- printf("M: %s\nHEADER:\n", $m);
- print_r($header);
- printf("GET:\n");
- print_r($get);
- printf("POST:\n");
- print_r($post);
-
- /* TODO: here stuff to decide if it is old or new user */
- if (($user_cur = user_get_sess($user_a, $get['sess'])) != FALSE) {
- /* close the previous socket */
- unset($s2u[intval($user_cur->sock_get())]);
- unset($socks[intval($user_cur->sock_get())]);
- fclose($user_cur->sock_get());
- /* assign the new socket */
- $user_cur->sock_set($new_socket);
- $id = $user_cur->id_get();
- $s2u[intval($new_socket)] = $id;
- $socks[intval($new_socket)] = $new_socket;
- fwrite($new_socket, $rndstr);
- fflush($new_socket);
- }
- else if (($user_cur = user_get_free($user_a)) != FALSE) {
- stream_set_blocking($new_socket, $blocking_mode); // Set the stream to non-blocking
- $socks[intval($new_socket)] = $new_socket;
-
- $id = $user_cur->id_get();
- $user_a[$id]->enable($new_socket, $get['sess']);
- printf("s2u: ci passo %d\n", intval($new_socket));
- $s2u[intval($new_socket)] = $id;
-
- fwrite($new_socket, $rndstr);
- fflush($new_socket);
+ $write = NULL;
+ $except = NULL;
+ $num_changed_sockets = stream_select($read, $write, $except, 0, 250000);
+
+ if ($num_changed_sockets == 0) {
+ printf(" no data in 5 secs ");
+ }
+ else if ($num_changed_sockets > 0) {
+ printf("num sock %d num_of_socket: %d\n", $num_changed_sockets, count($read));
+ if ($this->debug > 1) {
+ print_r($read);
+ }
+ /* At least at one of the sockets something interesting happened */
+ foreach ($read as $i => $sock) {
+ /* is_resource check is required because there is the possibility that
+ during new request an old connection is closed */
+ if (!is_resource($sock)) {
+ continue;
+ }
+ if ($sock === $this->list) {
+ printf("NUOVA CONNEX\n");
+ $new_unix = stream_socket_accept($this->list);
+ $stream_info = "";
+ $method = "";
+ $get = array();
+ $post = array();
+ $cookie = array();
+ if (($new_socket = ancillary_getstream($new_unix, $stream_info)) !== FALSE) {
+ printf("NEW_SOCKET: %d\n", intval($new_socket));
+ stream_set_blocking($new_socket, $this->blocking_mode); // Set the stream to non-blocking
+ printf("RECEIVED HEADER:\n%s", $stream_info);
+ $path = spu_process_info($stream_info, $method, $header, $get, $post, $cookie);
+ printf("PATH: [%s]\n", $path);
+ printf("M: %s\nHEADER:\n", $method);
+ print_r($header);
+ printf("GET:\n");
+ print_r($get);
+ printf("POST:\n");
+ print_r($post);
+ printf("COOKIE:\n");
+ print_r($cookie);
+
+ $addr = stream_socket_get_name($new_socket, TRUE);
+ $header_out = array();
+
+ $this->room->request_mgr($this, $header_out, $new_socket, $path, $addr, $get, $post, $cookie);
+ printf("number of sockets after %d\n", count($this->socks));