/** * Receive the given string of data from the server. * * @return mixed a line of response on success or a PEAR_Error object on failure. * * @access private * @since 1.0 */ function _recvLn() { if (PEAR::isError($this->lastline = $this->_socket->gets(8192))) { return new PEAR_Error('Failed to write to socket: ' . $this->lastline->getMessage()); } if ($this->_debug) { // S: means this data was sent by the IMAP Server echo "S: " . date("H:i:s") . " " . htmlspecialchars($this->lastline) . "\n"; $this->dbgDialog .= "S: " . $this->lastline . ""; } if ($this->lastline == '') { return new PEAR_Error('Failed to receive from the socket: '); } return $this->lastline; }
/** * Receive the given string of data from the server. * * @return mixed a line of response on success or a PEAR_Error object on failure. * * @access private * @since 1.0 */ function _recvLn() { if (PEAR::isError($this->lastline = $this->_socket->gets(8192))) { return new PEAR_Error('Failed to write to socket: ' . $this->lastline->getMessage()); } if ($this->_debug) { // S: means this data was sent by the IMAP Server echo 'S: ' . $this->lastline; $this->dbgDialog .= 'S: ' . $this->lastline; } if ($this->lastline == '') { return new PEAR_Error('Failed to receive from the socket: '); } return $this->lastline; }
/** * Receives a single line from the server. * * @return string The server response line. */ function _recvLn() { if (PEAR::isError($lastline = $this->_sock->gets(8192))) { return PEAR::raiseError('Failed to read from socket: ' . $lastline->getMessage()); } $lastline = rtrim($lastline); $this->_debug("S: {$lastline}"); if ($lastline === '') { return PEAR::raiseError('Failed to read from socket'); } return $lastline; }
/** * Get data until a line with only a '.' in it is read and return data. * * @return mixed (array) text response on success or (object) pear_error on failure * @access private */ function _getTextResponse() { $data = array(); $line = ''; // Continue until connection is lost while (!$this->_socket->eof()) { // Retrieve and append up to 1024 characters from the server. $line .= $this->_socket->gets(1024); if (PEAR::isError($line)) { return PEAR::throwError('Failed to read from socket!', null, $line->getMessage()); } // Continue if the line is not terminated by CRLF if (substr($line, -2) != "\r\n" || strlen($line) < 2) { continue; } // Validate recieved line if (false) { // Lines should/may not be longer than 998+2 chars (RFC2822 2.3) if (strlen($line) > 1000) { return PEAR::throwError('Invalid line recieved!', null); } } // Remove CRLF from the end of the line $line = substr($line, 0, -2); // Check if the line terminates the textresponse if ($line == '.') { // return all previous lines return $data; break; } // If 1st char is '.' it's doubled (NNTP/RFC977 2.4.1) if (substr($line, 0, 2) == '..') { $line = substr($line, 1); } // Add the line to the array of lines $data[] = $line; // Reset/empty $line $line = ''; } return PEAR::throwError('Data stream not terminated with period', null); }
/** * Receives a single line from the server. * * @return string The server response line. */ function _recvLn() { $lastline = $this->_sock->gets(8192); if (is_a($lastline, 'PEAR_Error')) { return $this->_pear->raiseError('Failed to read from socket: ' . $lastline->getMessage()); } $lastline = rtrim($lastline); $this->_debug("S: {$lastline}"); if ($lastline === '') { return $this->_pear->raiseError('Failed to read from socket'); } return $lastline; }