- updated bundled Net_Socket to 1.0.9

release-0.6
alecpl 16 years ago
parent d78c4174ca
commit e275ce6e8d

@ -123,6 +123,7 @@ class Net_Socket extends PEAR {
$openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen';
$errno = 0; $errno = 0;
$errstr = ''; $errstr = '';
$old_track_errors = @ini_set('track_errors', 1);
if ($options && function_exists('stream_context_create')) { if ($options && function_exists('stream_context_create')) {
if ($this->timeout) { if ($this->timeout) {
$timeout = $this->timeout; $timeout = $this->timeout;
@ -130,7 +131,15 @@ class Net_Socket extends PEAR {
$timeout = 0; $timeout = 0;
} }
$context = stream_context_create($options); $context = stream_context_create($options);
$fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context);
// Since PHP 5 fsockopen doesn't allow context specification
if (function_exists('stream_socket_client')) {
$flags = $this->persistent ? STREAM_CLIENT_PERSISTENT : STREAM_CLIENT_CONNECT;
$addr = $this->addr . ':' . $this->port;
$fp = stream_socket_client($addr, $errno, $errstr, $timeout, $flags, $context);
} else {
$fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context);
}
} else { } else {
if ($this->timeout) { if ($this->timeout) {
$fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout);
@ -140,9 +149,14 @@ class Net_Socket extends PEAR {
} }
if (!$fp) { if (!$fp) {
if ($errno == 0 && isset($php_errormsg)) {
$errstr = $php_errormsg;
}
@ini_set('track_errors', $old_track_errors);
return $this->raiseError($errstr, $errno); return $this->raiseError($errstr, $errno);
} }
@ini_set('track_errors', $old_track_errors);
$this->fp = $fp; $this->fp = $fp;
return $this->setBlocking($this->blocking); return $this->setBlocking($this->blocking);
@ -152,7 +166,7 @@ class Net_Socket extends PEAR {
* Disconnects from the peer, closes the socket. * Disconnects from the peer, closes the socket.
* *
* @access public * @access public
* @return mixed true on success or an error object otherwise * @return mixed true on success or a PEAR_Error instance otherwise
*/ */
function disconnect() function disconnect()
{ {
@ -184,7 +198,7 @@ class Net_Socket extends PEAR {
* *
* @param boolean $mode True for blocking sockets, false for nonblocking. * @param boolean $mode True for blocking sockets, false for nonblocking.
* @access public * @access public
* @return mixed true on success or an error object otherwise * @return mixed true on success or a PEAR_Error instance otherwise
*/ */
function setBlocking($mode) function setBlocking($mode)
{ {
@ -204,7 +218,7 @@ class Net_Socket extends PEAR {
* @param integer $seconds Seconds. * @param integer $seconds Seconds.
* @param integer $microseconds Microseconds. * @param integer $microseconds Microseconds.
* @access public * @access public
* @return mixed true on success or an error object otherwise * @return mixed true on success or a PEAR_Error instance otherwise
*/ */
function setTimeout($seconds, $microseconds) function setTimeout($seconds, $microseconds)
{ {
@ -229,7 +243,7 @@ class Net_Socket extends PEAR {
return $this->raiseError('not connected'); return $this->raiseError('not connected');
} }
$returned = stream_set_write_buffer($this->fp, $code); $returned = stream_set_write_buffer($this->fp, $size);
if ($returned == 0) { if ($returned == 0) {
return true; return true;
} }
@ -248,7 +262,7 @@ class Net_Socket extends PEAR {
* </p> * </p>
* *
* @access public * @access public
* @return mixed Array containing information about existing socket resource or an error object otherwise * @return mixed Array containing information about existing socket resource or a PEAR_Error instance otherwise
*/ */
function getStatus() function getStatus()
{ {
@ -303,7 +317,9 @@ class Net_Socket extends PEAR {
* NULL means all at once. * NULL means all at once.
* *
* @access public * @access public
* @return mixed true on success or an error object otherwise * @return mixed If the socket is not connected, returns an instance of PEAR_Error
* If the write succeeds, returns the number of bytes written
* If the write fails, returns false.
*/ */
function write($data, $blocksize = null) function write($data, $blocksize = null)
{ {
@ -312,7 +328,7 @@ class Net_Socket extends PEAR {
} }
if (is_null($blocksize) && !OS_WINDOWS) { if (is_null($blocksize) && !OS_WINDOWS) {
return fwrite($this->fp, $data); return @fwrite($this->fp, $data);
} else { } else {
if (is_null($blocksize)) { if (is_null($blocksize)) {
$blocksize = 1024; $blocksize = 1024;
@ -432,10 +448,10 @@ class Net_Socket extends PEAR {
} }
/** /**
* Reads an IP Address and returns it in a dot formated string * Reads an IP Address and returns it in a dot formatted string
* *
* @access public * @access public
* @return Dot formated string, or a PEAR_Error if * @return Dot formatted string, or a PEAR_Error if
* not connected. * not connected.
*/ */
function readIPAddress() function readIPAddress()
@ -445,7 +461,7 @@ class Net_Socket extends PEAR {
} }
$buf = @fread($this->fp, 4); $buf = @fread($this->fp, 4);
return sprintf("%s.%s.%s.%s", ord($buf[0]), ord($buf[1]), return sprintf('%d.%d.%d.%d', ord($buf[0]), ord($buf[1]),
ord($buf[2]), ord($buf[3])); ord($buf[2]), ord($buf[3]));
} }

Loading…
Cancel
Save