1--TEST--
2Check for eio_sendfile function work with sockets
3--SKIPIF--
4<?php
5if (!extension_loaded('sockets')) {
6	die('SKIP The sockets extension is not loaded');
7}
8?>
9--FILE--
10<?php
11ini_set('display_errors', 'On');
12ini_set('log_errors', 'Off');
13
14function my_cb($socket, $result) {
15	var_dump($socket);
16	var_dump($result);
17
18	if ($result <= 0) {
19		return;
20	}
21
22	$data = socket_read($socket, 10, PHP_BINARY_READ);
23	var_dump($data);
24}
25
26$tmp_file = sprintf("/tmp/tmp_%s", uniqid());
27$fp = fopen($tmp_file, 'w+');
28$data = "ABCdef123";
29var_dump($data);
30fwrite($fp, $data);
31
32$sock_path = sprintf("/tmp/%s.sock", uniqid());
33if (file_exists($sock_path))
34	die('Temporary socket already exists.');
35
36/* Setup socket */
37$server = socket_create(AF_UNIX, SOCK_STREAM, 0);
38if (!$server) {
39	die('Unable to create AF_UNIX socket [server]');
40}
41if (!socket_bind($server,  $sock_path)) {
42	die("Unable to bind to $sock_path");
43}
44if (!socket_listen($server, 2)) {
45	die('Unable to listen on socket');
46}
47
48/* Connect to socket */
49$client = socket_create(AF_UNIX, SOCK_STREAM, 0);
50if (!$client) {
51	die('Unable to create AF_UNIX socket [client]');
52}
53if (!socket_connect($client, $sock_path)) {
54	die('Unable to connect to server socket');
55}
56
57/* Accept socket connection */
58$socket = socket_accept($server);
59if (!$socket) {
60	die('Unable to accept connection');
61}
62
63
64eio_sendfile($client, $fp, 0, 8, 0, 'my_cb', $socket);
65eio_event_loop();
66
67fclose($fp);
68socket_close($client);
69socket_close($socket);
70socket_close($server);
71@unlink($sock_path);
72@unlink($tmp_file);
73?>
74--EXPECT--
75string(9) "ABCdef123"
76resource(8) of type (Socket)
77int(8)
78string(8) "ABCdef12"
79