From 3ebedb90c5d41ce34cf4dd9dba00f12fb78d024a Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Tue, 5 Feb 2013 18:37:38 +0100 Subject: [PATCH] enhanced POST management --- web/Obj/sac-a-push.phh | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/web/Obj/sac-a-push.phh b/web/Obj/sac-a-push.phh index d39740c..fe8ec42 100644 --- a/web/Obj/sac-a-push.phh +++ b/web/Obj/sac-a-push.phh @@ -132,11 +132,15 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook } // POST params management if ($req[0] == 'POST') { + $conttype_all = explode(";", $header['Content-Type']); + $header['Content-Type'] = $conttype_all[0]; + // $path_all[1-] other things like charset and so on + if ($header['Content-Type'] != 'application/x-www-form-urlencoded' || !isset($header['Content-Length'])) { return FALSE; } - $post_len = mb_strlen($line, "latin1"); + $post_len = mb_strlen($line, "ASCII"); $a = explode('&', $line); for ($i = 0 ; $i < count($a) ; $i++) { $b = explode('=', $a[$i]); @@ -589,8 +593,18 @@ class Sac_a_push { 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); + $addr = stream_socket_get_name($new_socket, TRUE); printf("PATH: [%s]\n", $path); printf("M: %s\nHEADER:\n", $method); + if ($method == "POST") { + // ADD PUSH INTO FD ARRAY AS WAITING DATA + // Passing all infos from spu_process_info as arguments: + // + // MAYBE: $stream_info, + // $method, $header, $get, $post, $cookie + // $s_a_p (this), $new_socket, substr($path, SITE_PREFIX_LEN), + // $addr + } print_r($header); printf("GET:\n"); print_r($get); @@ -598,11 +612,9 @@ class Sac_a_push { print_r($post); printf("COOKIE:\n"); print_r($cookie); - $addr = stream_socket_get_name($new_socket, TRUE); $header_out = array(); - $subs = SITE_PREFIX."briskin5/"; - $subs_l = strlen($subs); + // TODO: MOVE DOWN request_mgr to factorize new_sockets and POST closed $rret = FALSE; if (!strncmp($path, SITE_PREFIX, SITE_PREFIX_LEN)) { $rret = $this->app->request_mgr($this, $header, $header_out, $new_socket, substr($path, SITE_PREFIX_LEN), $addr, $get, $post, $cookie); @@ -621,6 +633,7 @@ class Sac_a_push { $buf = fread($sock, 512); // if socket is closed if ($buf == FALSE || strlen($buf) == 0) { + // close socket case if ($buf == FALSE) { printf("ERROR READING\n"); } @@ -678,6 +691,8 @@ class Sac_a_push { } } } + // TODO: MOVE HERE request_mgr to factorize new_sockets and POST closed + // $rret = $this->app->request_mgr } } -- 2.17.1