Commit: b3effa60c73922ddf4a7df3be3a0e4e5ca47f70d Author: Gustavo Lopes <glo...@nebm.ist.utl.pt> Tue, 23 Oct 2012 13:09:38 +0200 Parents: 17540788ad8c25969f1dbd02c1a3b75a8417fe9c Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b3effa60c73922ddf4a7df3be3a0e4e5ca47f70d Log: Improve imported socket family detection Also added constant SO_FAMILY. Changed paths: M ext/sockets/sockets.c Diff: diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index b213b0a..863825d 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -748,6 +748,9 @@ PHP_MINIT_FUNCTION(sockets) REGISTER_LONG_CONSTANT("SO_SNDTIMEO", SO_SNDTIMEO, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SO_RCVTIMEO", SO_RCVTIMEO, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SO_TYPE", SO_TYPE, CONST_CS | CONST_PERSISTENT); +#ifdef SO_FAMILY + REGISTER_LONG_CONSTANT("SO_FAMILY", SO_FAMILY, CONST_CS | CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("SO_ERROR", SO_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOL_SOCKET", SOL_SOCKET, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOMAXCONN", SOMAXCONN, CONST_CS | CONST_PERSISTENT); @@ -2436,6 +2439,10 @@ PHP_FUNCTION(socket_import_stream) #ifndef PHP_WIN32 int t; #endif +#ifdef SO_DOMAIN + int type; + socklen_t type_len = sizeof(type); +#endif if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstream) == FAILURE) { return; @@ -2452,6 +2459,11 @@ PHP_FUNCTION(socket_import_stream) retsock->bsd_socket = socket; /* determine family */ +#ifdef SO_DOMAIN + if (getsockopt(socket, SOL_SOCKET, SO_DOMAIN, &type, &type_len) == 0) { + retsock->type = type; + } else +#endif if (getsockname(socket, (struct sockaddr*)&addr, &addr_len) == 0) { retsock->type = addr.ss_family; } else { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php