ID: 31090
Updated by: [EMAIL PROTECTED]
Reported By: ifirla at aegissrl dot it
-Status: Open
+Status: Bogus
Bug Type: Sockets related
Operating System: Debian GNU/Linux 3.0
PHP Version: 4.3.9
New Comment:
Here's the proto for fwrite():
int fwrite ( resource handle, string string [, int length])
See the 3rd parameter? Give the length to the function.
Also note the 2nd parameter type..
No bug here.
Previous Comments:
------------------------------------------------------------------------
[2004-12-14 17:18:04] ifirla at aegissrl dot it
Description:
------------
an array holds elements of various types:
ascii|integer|integer|integer|integer
in a foreach loop, sending each element to a socket opened with
fsockopen sends the elements as strings, not as the character type.
gettype within the foreach loop shows that I'm sending dealing with the
correct types:
16:39:54 SENT 'K' of type string
16:39:54 SENT '0' of type integer
16:39:54 SENT '0' of type integer
16:39:54 SENT '65' of type integer
16:39:54 SENT '31' of type integer
fwrite is, according to the documentation, supposed to be binary safe.
I think there's a bug in fwrite that has it send all elements as
strings.
Reproduce code:
---------------
function send_back($sock, $msg, $ip, $port) {
$fp = fsockopen("udp://$ip", "$port");
foreach ($msg as $msg_to_send) {
fwrite($fp, $msg_to_send);
echo date("H:i:s")." SENT '$msg_to_send' of type
".gettype($msg_to_send)." \n"; //seen server side
}
fclose($fp);
}
Expected result:
----------------
running a packet sniffer, I can see that what's being sent are
strings:
15:46:10 192.168.0.101:32778 --> 192.168.0.84:32896 | UDP |
0000: 4b K
15:46:10 192.168.0.101:32778 --> 192.168.0.84:32896 | UDP |
0000: 30 0
15:46:10 192.168.0.101:32778 --> 192.168.0.84:32896 | UDP |
0000: 30 0
15:46:10 192.168.0.101:32778 --> 192.168.0.84:32896 | UDP |
0000: 3635 65
15:46:10 192.168.0.101:32778 --> 192.168.0.84:32896 | UDP |
0000: 3331 31
Actual result:
--------------
Those last two (65 and 31) should be represented by single bytes, not
two bytes.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31090&edit=1