Closed mastir closed 2 years ago
Tried without react and everything works
$port = $argv[1] ?? 33664;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', $port);
echo 'Connect: '.($result ? 'OK' : 'FAIL');
if (!$result)exit;
$minimal = hex2bin('78780d0103587350716231840064b1450d0a').hex2bin('78780a1305060400020067e3370d0a').hex2bin('78781f12120612102129c60533baf803bf642414544b00ff0675330005e9001941d00d0a');
echo 'Got:';
socket_write($socket, $minimal, strlen($minimal));
while ($data = socket_read($socket, 2048)) {
echo chunk_split(bin2hex($data),2,' ');
}
echo "close..\n\n";
socket_close($socket);
Connect: OKGot:78 78 05 01 00 64 ed 77 0d 0a 78 78 05 13 00 67 ef c1 0d 0a
@mastir Thanks for reporting, this is a nasty one!
It looks like there's s small oversight and all you're missing is a use ($minimal)
in your code. Because this is missing, you're essentially passing an undefined variable to $conn->send()
which PHP will report (as a warning in PHP 8+ and as a notice in earlier versions) and continue with a null
value, effectively sending nothing.
Your IDE of choice or static analysis tools such as phpstan should be able to point you to this variable. On top of this, you can configure PHP to show this warning/notice to you during runtime.
If you're using an error handler that turns this warning/notice into an Exception
or Throwable
, the code will currently cause the promise to be rejected on this line. We're working on https://github.com/reactphp/promise/issues/87 to improve default error reporting in this case.
I believe this has been answered, so I'm closing this for now. Please come back with more details if this problem persists and we can always reopen this :+1:
When i test my server, i see new connection, but no data sent.
iptables -L
I started
nc -l 0.0.0.0 33664
and nothing. I see "Send" message, but nothing ever happens. Only if i stop nc i see "close" message. But when i send a big amount of data it works. Tried piping 2mb file with test data and it worked so I tried to save into file this data and pipe it - nothig comes.