#21366 [Fbk->NoF]: socket_getpeername does not function with AF_UNIX sockets
| From: | sniper@php.net | Date: | Mon, 10 Mar 2003 00:47:08 +0000 |
| Subject: | #21366 [Fbk->NoF]: socket_getpeername does not function with AF_UNIX sockets | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-35169@lists.php.net to get a copy of this message | ||
ID: 21366
Updated by: sniper@php.net
Reported By: piotr at t-p-l dot com
-Status: Feedback
+Status: No Feedback
Bug Type: Sockets related
Operating System: Linux
PHP Version: 4.3.0
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2003-03-04 20:39:34] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
can't reproduce this..
------------------------------------------------------------------------
[2003-02-13 20:15:47] piotr at t-p-l dot com
Here it goes ..
<?php
$sock = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_bind($sock, "/tmp/mysock");
socket_listen($sock);
$asock = socket_accept($sock);
socket_getpeername($asock, $address, $port);
echo "Connection from Address: $address Port: $port\n";
?>
the result (after connecting to the socket .. I used the utility "sock"
to quickly connect to the socket) was the following:
Connection from Address: Üã0
Port:
aka .. gibberish ..
here is the result of php -v for your reference:
PHP 4.3.0 (cli) (built: Jan 13 2003 01:39:49)
Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
------------------------------------------------------------------------
[2003-02-13 19:42:42] sniper@php.net
Could your please provide a short but _complete_, self-contained
script? (yes, we're lazy :)
------------------------------------------------------------------------
[2003-01-02 19:48:49] piotr at t-p-l dot com
just to remove the confusion .. that is a cleaned up sniped from a
generic socket class I'm working on thats why the refernces to the
socket's Domain (as oposed to being hardcoded)
the socket ($sock) was created with its domain set to the value of
$Domain
------------------------------------------------------------------------
[2003-01-02 19:23:01] piotr at t-p-l dot com
sample code: (not complete .. just gives the idea)
///////////////
$Domain = // either AF_UNIX or AF_INET
$result = socket_accept($sock);
$address = "<undefined>";
$port = "<undefined>";
if ($Domain == AF_UNIX) {
socket_getpeername($result,$address,$port);
echo "Accepted Connection from: $address\n";
} else { // its AF_INET
socket_getpeername($result,$address,$port);
echo "Accepted Connection from: $address:$port\n";
}
///////////////
when the socket is a AF_INET socket the result if properly filled in.
sample output:
Accepted Connection from: 123.123.123.123:1234
but when the socket is a unix socket .. the result is somehow wrong ..
sample:
Accepted Connection from: $0
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21366&edit=1