The Little Guy Posted October 31, 2009 Share Posted October 31, 2009 I have a socket server, and I am having a problem at the moment... A browser sends a http header request to the server, but... some browsers send one request for one file, and others want 2. For example, Google Chrome asks for two parts: The headers, and the post data. Whereas Firefox sends it all at once. Chrome Part 1: POST /postdata.php HTTP/1.1 Host: localhost:3333 User-Agent: Some Chrome string here Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://localhost:3333/postdata.php Chrome Part 2: ------WebKitFormBoundaryHigb2TwanNRf4WQK Content-Disposition: form-data; name="name" ryan ------WebKitFormBoundaryHigb2TwanNRf4WQK Content-Disposition: form-data; name="comment" hello ------WebKitFormBoundaryHigb2TwanNRf4WQK Content-Disposition: form-data; name="myFile"; filename="test.txt" Content-Type: text/plain hello! This is a test document! Line 2 Line 3 Line 5 Line 6 End File! ------WebKitFormBoundaryHigb2TwanNRf4WQK Content-Disposition: form-data; name="submit" Post It! ------WebKitFormBoundaryHigb2TwanNRf4WQK-- Firefox Whole thing: POST /postdata.php HTTP/1.1 Host: localhost:3333 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://localhost:3333/postdata.php Content-Type: multipart/form-data; boundary=---------------------------491299511942 Content-Length: 566 -----------------------------491299511942 Content-Disposition: form-data; name="name" ryan -----------------------------491299511942 Content-Disposition: form-data; name="comment" adfafqa -----------------------------491299511942 Content-Disposition: form-data; name="myFile"; filename="test.txt" Content-Type: text/plain hello! This is a test document! Line 2 Line 3 Line 5 Line 6 End File! -----------------------------491299511942 Content-Disposition: form-data; name="submit" Now the problem is that since firefox sends it once, my code makes Firefox hang because I have two socket_recv one for the headers, and one for the post data, where the second socket_recv just sits and waits but nothing is sent to it. In Chrome this works just fine, because data is send at two different times (headers and post data). I don't really want to write code that checks a browser to see what the browser is and do something according the browser type, so is there a better way then what I have to get the data no matter what browser the user is using, and the code doesn't hang if the browser only sends headers once? socket_recv($client, $headers, $max_post_size, 0); if(preg_match("~^POST~", $headers)){ socket_recv($client, $post, $max_post_size, 0); }else{ $post = ''; } Link to comment https://forums.phpfreaks.com/topic/179713-socket-makes-browser-hang/ Share on other sites More sharing options...
The Little Guy Posted October 31, 2009 Author Share Posted October 31, 2009 anyone have an suggestions? Link to comment https://forums.phpfreaks.com/topic/179713-socket-makes-browser-hang/#findComment-948444 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.