+ if (PHP5to7_ZEND_HASH_STR_FIND_PTR(&EG(persistent_list), key, key_len, le)) {
+ efree(key);
+
+ if (le->type != le_amqp_connection_resource_persistent) {
+ /* hash conflict, given name associate with non-amqp persistent connection resource */
+ return 0;
+ }
+
+ /* An entry for this connection resource already exists */
+ /* Stash the connection resource in the connection */
+ connection->connection_resource = le->ptr;
+
+ if (connection->connection_resource->resource != PHP5to7_ZEND_RESOURCE_EMPTY) {
+ /* resource in use! */
+ connection->connection_resource = NULL;
+
+ zend_throw_exception(amqp_connection_exception_class_entry, "There are already established persistent connection to the same resource.", 0 TSRMLS_CC);
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &method) == FAILURE) {
+ return;
+ }
+
+ /* Check the method value */
+ if (method != AMQP_SASL_METHOD_PLAIN && method != AMQP_SASL_METHOD_EXTERNAL) {
+ zend_throw_exception(amqp_connection_exception_class_entry, "Invalid SASL method given. Method must be AMQP_SASL_METHOD_PLAIN or AMQP_SASL_METHOD_EXTERNAL.", 0 TSRMLS_CC);
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &exponent, &significand) == FAILURE) {
+ return;
+ }
+
+ if (exponent < AMQP_DECIMAL_EXPONENT_MIN) {
+ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be unsigned.");
+ return;
+ }
+
+ if (exponent > AMQP_DECIMAL_EXPONENT_MAX) {
+ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal exponent value must be less than %u.", (unsigned)AMQP_DECIMAL_EXPONENT_MAX);
+ return;
+ }
+ if (significand < AMQP_DECIMAL_SIGNIFICAND_MIN) {
+ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be unsigned.");
+ return;
+ }
+
+ if (significand > AMQP_DECIMAL_SIGNIFICAND_MAX) {
+ zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, "Decimal significand value must be less than %u.", (unsigned)AMQP_DECIMAL_SIGNIFICAND_MAX);
+$message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+#define IS_NOWAIT(bitmask) (AMQP_NOWAIT & (bitmask)) ? 1 : 0 /* NOTE: always 0 in rabbitmq-c internals, so don't use it unless you are clearly understand aftermath*/
+
+#define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+$cnn = new AMQPConnection();
+$cnn->setTimeout(0);
+$cnn->getTimeout();
+?>
+--EXPECTF--
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 3
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 4
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+$cnn = new AMQPConnection();
+$cnn->setTimeout(.34);
+var_dump($cnn->getTimeout());
+$cnn->setTimeout(4.7e-2);
+var_dump($cnn->getTimeout());?>
+--EXPECTF--
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 3
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 4
+float(0.34)
+
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 5
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 6
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+$cnn = new AMQPConnection();
+$cnn->setTimeout(3);
+var_dump($cnn->getTimeout());
+?>
+--EXPECTF--
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 3
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 4
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+$cnn = new AMQPConnection();
+try {
+ $cnn->setTimeout(-1);
+} catch (Exception $e) {
+ echo get_class($e);
+ echo PHP_EOL;
+ echo $e->getMessage();
+}
+?>
+--EXPECTF--
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 4
+AMQPConnectionException
+Parameter 'timeout' must be greater than or equal to zero.
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+$cnn = new AMQPConnection();
+$cnn->setTimeout(".34");
+var_dump($cnn->getTimeout());
+$cnn->setTimeout("4.7e-2");
+var_dump($cnn->getTimeout());?>
+--EXPECTF--
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 3
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 4
+float(0.34)
+
+%s: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line 5
+
+%s: AMQPConnection::getTimeout(): AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead in %s on line 6
+<?php if (!extension_loaded("amqp")) print "skip"; ?>
+--FILE--
+<?php
+require '_test_helpers.php.inc';
+
+$cnn = new AMQPConnection();
+$cnn->connect();
+
+$ch = new AMQPChannel($cnn);
+
+$ex = new AMQPExchange($ch);
+$ex->setName("exchange-" . microtime(true));
+$ex->setType(AMQP_EX_TYPE_FANOUT);
+$ex->declareExchange();
+
+$q = new AMQPQueue($ch);
+$q->declareQueue();
+
+$q->bind($ex->getName());
+
+$attrs = array(
+ 'content_type' => 1, // should be string
+ 'content_encoding' => 2, // should be string
+ 'message_id' => 3, // should be string
+ //'user_id' => 4, // should be string // NOTE: fail due to Validated User-ID https://www.rabbitmq.com/validated-user-id.html, @see tests/amqpexchange_publish_with_properties_user_id_failure.phpt test
+ 'app_id' => 5, // should be string
+ 'delivery_mode' => '1-non-persistent', // should be long
+ 'priority' => '2high', // should be long
+ 'timestamp' => '123now', // should be long
+ 'expiration' => 100000000, // should be string // NOTE: in fact it is milliseconds for how long to stay in queue, see https://www.rabbitmq.com/ttl.html#per-message-ttl for details
+ 'type' => 7, // should be string
+ 'reply_to' => 8, // should be string
+ 'correlation_id' => 9, // should be string
+ //'headers' => 'not array', // should be array // NOTE: covered in tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
+);
+
+$attrs_control = array(
+ 'content_type' => 1, // should be string
+ 'content_encoding' => 2, // should be string
+ 'message_id' => 3, // should be string
+ //'user_id' => 4, // should be string // NOTE: fail due to Validated User-ID https://www.rabbitmq.com/validated-user-id.html, @see tests/amqpexchange_publish_with_properties_user_id_failure.phpt test
+ 'app_id' => 5, // should be string
+ 'delivery_mode' => '1-non-persistent', // should be long
+ 'priority' => '2high', // should be long
+ 'timestamp' => '123now', // should be long
+ 'expiration' => 100000000, // should be string // NOTE: in fact it is milliseconds for how long to stay in queue, see https://www.rabbitmq.com/ttl.html#per-message-ttl for details
+ 'type' => 7, // should be string
+ 'reply_to' => 8, // should be string
+ 'correlation_id' => 9, // should be string
+ //'headers' => 'not array', // should be array // NOTE: covered in tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
+AMQPQueueException(406): Server channel error: 406, message: PRECONDITION_FAILED - user_id property set to 'unknown-%f' but authenticated user was 'guest'
+ echo get_class($e), "({$e->getCode()}): ", $e->getMessage(), '.', PHP_EOL; // we pad exception message with dot to make EXPETF be the same on PHP 5 and PHP 7
+ <summary>Communicate with any AMQP compliant server</summary>
+ <description>This extension can communicate with any AMQP spec 0-9-1 compatible server, such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and delete exchanges and queues, as well as publish to any exchange and consume from any queue.</description>
+- Windows build: avoid variable lengths arrays (Christoph M. Becker) (https://github.com/pdezwart/php-amqp/issues/368)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.10.1...v1.10.2
+- Fix Windows compatibility: avoid variable lengths arrays (Christoph M. Becker <cmbecker69@gmx.de>) (https://github.com/pdezwart/php-amqp/issues/368)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.10.0...v1.10.1
+- Adding global prefetch support (#366) (Terence Marks <tezmarks@gmail.com>) (https://github.com/pdezwart/php-amqp/issues/367) - Fix minimal librabbitmq in config.m4 and readme (Remi Collet <remi@remirepo.net>) (https://github.com/pdezwart/php-amqp/issues/347) - Support connection_name parameter for custom connection names in RabbitMQ (Alexandr Zolotukhin <supersmile2009@gmail.com>) (https://github.com/pdezwart/php-amqp/issues/363) - Fixed build on Travis CI (Alexandr Zolotukhin <supersmile2009@gmail.com>) (https://github.com/pdezwart/php-amqp/issues/365) - Make use of rpc_timeout in newer librabbitmq by introducing new constructor hash parameter (modulatix <oleg.pereverzev@gmail.com>) (https://github.com/pdezwart/php-amqp/issues/334) - Fix #355: Compile failure on php 7.4 (Christoph M. Becker <cmbecker69@gmx.de>) (https://github.com/pdezwart/php-amqp/issues/359) - Update amqp_type.c (Paweł Mikołajczuk <pawel@mikolajczuk.in>) (https://github.com/pdezwart/php-amqp/issues/360) - Build against PHP 7.4 (Carlos Barrero <carlos.barrero@spotahome.com>) (https://github.com/pdezwart/php-amqp/issues/361) - Pass params by value in AMQPConnection::__construct() (Sergei Karpov) (https://github.com/pdezwart/php-amqp/issues/346) - Fix explicit null-string for $routing_key in Queue::bind() and Exchange::publish() (Sergei Karpov) (https://github.com/pdezwart/php-amqp/issues/341) - No longer limited to PHP 5 (Lars Strojny <lars.strojny@internations.org>) (https://github.com/pdezwart/php-amqp/issues/0) - Fix minimal version to 5.6 (Remi Collet <remi@famillecollet.com>) (https://github.com/pdezwart/php-amqp/issues/338) - Back to dev (Lars Strojny <lars.strojny@internations.org>) (https://github.com/pdezwart/php-amqp/issues/1)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.9.4...v1.10.0
+* Improved build environment (Olivier Dolbeau) * Various bug fixes and improvements (Bogdan Padalko, yjqg6666) * Support for PHP 7.3 (Remi Collet)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.9.3...v1.9.4
+* Fix handling channel consumers (#284) (Bogdan Padalko) * Add support for consumer tags (#282) (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.9.1...v1.9.3
+* Separate queue and exchange args to prevent segfault with opcache enabled (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.9.0...v1.9.1
+* AMQP types are now better supported through value objects (see #271, #269, #265) (Bogdan Padalko, Lars Strojny)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.8.0...v1.9.0
+* AMQP types are now better supported through value objects (see #271, #269, #265) (Bogdan Padalko, Lars Strojny)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.8.0...v1.9.0beta2
+* AMQP types are now better supported through value objects (see #271, #269, #265) (Bogdan Padalko, Lars Strojny) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.8.0...v1.9.0beta1
+* Add SSL connection support (Bogdan Padalko) * Support for server method handling: confirms (publisher acknowledgments) and basic.return (Bogdan Padalko) * Add support for pkg-config (Remi Collet) * Preserve AMQP server error code for exceptions (Bogdan Padalko) * Add AMQPChannel::close() (Bogdan Padalko) * Fix segfault when deleting an unknown exchange (Bogdan Padalko) * Fix segfault with PHPUnit and xdebug for PHP 7 (Bogdan Padalko) * Add publisher confirms (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.7.1...v1.8.0
+* Add SSL connection support (Bogdan Padalko) * Support for server method handling: confirms (publisher acknowledgments) and basic.return (Bogdan Padalko) * Add support for pkg-config (Remi Collet) * Preserve AMQP server error code for exceptions (Bogdan Padalko) * Add AMQPChannel::close() (Bogdan Padalko) * Fix segfault when deleting an unknown exchange (Bogdan Padalko) * Fix segfault with PHPUnit and xdebug for PHP 7 (Bogdan Padalko) * Add publisher confirms (Bogdan Padalko) * Fix 1.8.0 release (Lars Strojny) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.7.1...v1.8.0beta2
+* Add support for pkg-config (Remi Collet) * Fixed wrongful truncation of amqp.password to the length of amqp.login (https://github.com/skobkars)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.7.0...v1.7.1
+* Add PHP7 support (Bogdan Padalko, Steffen Hanikel) * Add AMQPEnvelope::hasHeader(), AMQPExchange::hasArgument() and AMQPQueue::hasArgument() to check whether specific header exists (Bogdan Padalko) * Fix AMQPConnection::setPort() writes to wrong property (Bogdan Padalko) * Add compiled librabbitmq version early check (Bogdan Padalko) * Fix segfault when channel zval type != IS_OBJECT (Bogdan Padalko) * Fix API breakage when rabbitmq-c < 0.6.0 used (Bogdan Padalko) * Close connection on library errors (Bogdan Padalko) * Do not store connection resource ID string (Bogdan Padalko) * Explicitly cleanup references on connection on cleanup (Bogdan Padalko) * Show effective connection values when connection is active and passed values otherwise (Bogdad Padalko) * Completely move to zend object custom objects (AMQPEnvelope, AMQPExchange and AMQPQueue) (Bogdan Padalko) * Use zend object on custom objects for properties storing (AMQPConnection and AMQPChannel) (Bogdan Padalko) * Fix not properly deleted connection resource. (Bogdan Padalko, Steffen Hanikel) * Fix not properly allocated and freed amqp_table_t arguments table memory. (Bogdan Padalko, Steffen Hanikel) * Upgrade vagrant box to Ubuntu 15.10 Wily Werwof (Bogdan Padalko) * Fix various grammar and spelling mistakes (Artem Gordinsky) * Update stubs (Sascha-Oliver Prolic)For a complete list of changes see:https://github.com/pdezwart/php-amqp/compare/v1.6.0...v1.7.0
+* Fix AMQPConnection::setPort() writes to wrong property (Bogdan Padalko) * Upgrade vagrant box to Ubuntu 15.10 Wily Werwof (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.7.0alpha1...v1.7.0alpha2
+* Add PHP7 support (Bogdan Padalko, Steffen Hanikel) * Add AMQPEnvelope::hasHeader(), AMQPExchange::hasArgument() and AMQPQueue::hasArgument() to check whether specific header exists (Bogdan Padalko) * Completely move to zend object custom objects (AMQPEnvelope, AMQPExchange and AMQPQueue) (Bogdan Padalko) * Use zend object on custom objects for properties storing (AMQPConnection and AMQPChannel) (Bogdan Padalko) * Fix not properly deleted connection resource. (Bogdan Padalko, Steffen Hanikel) * Fix not properly allocated and freed amqp_table_t arguments table memory. (Bogdan Padalko, Steffen Hanikel) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.6.0...v1.7.0alpha1
+1.6.0 Release: * Various build fixes (Remi Collet) * librabbitmq 0.5 compatibility (Remi Collet) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.6.0beta4...v1.6.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.6.0beta4</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2015-09-18</date>
+ <notes>
+1.6.0beta4 Release: * Add ability to re-attach consuming callback (Bogdan Padalko) * Add AMQPQueue::getConsumerTag() method and fix consumer tag handling in AMQPQueue class methods (Bogdan Padalko) * Add channel_max, frame_max and hearbeat support (see AMQPConnection::__construct() method) (librabbitmq version >= 0.6.0 required) (Bogdan Padalko) * Fix issue with message truncating to first null-byte during sending (Bogdan Padalko, special thanks to Alex Kazinskiy, Alvaro Videla and Michael Klishin) * Fix issue with message truncating to first null-byte during sending (Bogdan Padalko) * Fix invalid delivery mode returned by AMQPEnvelop::getDeliveryMode (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.6.0beta3...v1.6.0beta4
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.6.0beta3</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2015-04-18</date>
+ <notes>
+1.6.0beta3 Release: * Add basic.recover AMQP method support (see AMQPChannel::basicRecover() method) (Bogdan Padalko) * Fix building on OS X (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.6.0beta2...v1.6.0beta3
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.6.0beta2</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2015-01-27</date>
+ <notes>
+1.6.0beta2 Release: * Pulled 1.6.0beta1, as it had the stable tag * Add support for nested arguments values (Bogdan Padalko) * Add auto_delete and internal flags support for AMQPExchange::declare (librabbitmq version > 0.5.2 required) (Bogdan Padalko) * Fix persistence support (Bogdan Padalko) * Add AMQPExchange::unbind method and fix AMQPExchange::bind method. WARNING: this can potentially break BC (Bogdan Padalko) * Add support to consume messages from multiple queues (Bogdan Padalko) * Add AMQP_DURABLE flag support to AMQPExchange::setFlags (librabbitmq version > 0.5.2 required) (Bogdan Padalko) * Fix inconsistent INI values comparison which leads to deprecation warnings (Bogdan Padalko) * Various segfault and memory leak fixes (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.4.0...v1.6.0beta2
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.4.0</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2014-04-14</date>
+ <notes>
+1.4.0 Release: * Fix #72: Publishing to an exchange with an empty name is valid and should not throw an exception (lstrojny) * Fix #77: AMQPQueue::delete() now no longer returns a boolean, but an integer of how many messages were deleted. WARNING: this can potentially break BC (Bogdan Padalko) * Fix #75: adhering to the AMQP spec by closing channel and sometimes even the connection in case of certain errors (Bogdan Padalko) * Fix #81: Add optional arguments parameter to bind()/unbind() (Michael Squires) * Fix #82: additional getters (getChannel(), getConnection()) (Bogdan Padalko) * Fix #92: fix various memory leaks in the AMQPConnection class (Lars Strojny) * Using amqp_error_string2() instead of deprecated amqp_error_string() (Lars Strojny) * Fix memory leaks in setHost, setLogin, setPassword, setVhost (Lars Strojny, Bogdan Padalko) * Fixed a memleak in php_amqp_connect (Julien Pauli) * Use rabbitmq-c defaults for max channels and default frame size (Bogdan Padalko) * Fix socket timeout error when connecting over high-latency network (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.4.0beta2...v1.4.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.4.0beta2</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2014-03-08</date>
+ <notes>
+1.4.0beta2 Release: * - For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.4.0beta1...v1.4.0beta2
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.4.0beta1</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2014-01-15</date>
+ <notes>
+1.4.0beta1 Release: * - For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.3.0...v1.4.0beta1
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.3.0</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>stable</api>
+ </stability>
+ <date>2013-11-25</date>
+ <notes>
+1.3.0 Release: * Allow retrieving auto-delete exchanges (Guilherme Blanco) * Add connection timeout support. This requires bumping the version requirement for librabbitmq to >= 0.4.1 (Bogdan Padalko) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.2.0...v1.3.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.2.0</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2013-05-28</date>
+ <notes>
+1.2.0 Release: * New methods AMQPChannel::getPrefetchCount() and AMQPChannel::getPrefetchSize() * Deprecate AMQPQueue::declare() in favor of AMQPQueue::declareQueue() * Deprecate AMQPExchange::declare() in favor of AMQPExchange::declareExchange() * Smaller fixes to our stubs For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.0.10...v1.2.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.10</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2013-05-28</date>
+ <notes>
+1.0.10 Release: * report correct version in module info (Lars Strojny) * fix class interface definitions (Vladimir Kartaviy) * add ability to bind a queue with an empty routing key (Vladimir Kartaviy) * fix constant AMQP_IFUNUSED (Florin Patan, Bernhard Weisshuhn) * added stubs for ide use (Vladimir Kartaviy, Bernhard Weisshuhn) * Fixed memory leak in queue->declareQueue (Ilya a.k.a. coodix) * support for php 5.5 (Lars Strojny) * add support for read and write timeouts (Bogdan Padalko) * fix memory leak in queue->consume (Dmitry Vinogradov) * add support for custom exchange types (empi89) * support for nested custom headers (Bernhard Weisshuhn) * fix memory (Bernhard Weisshuhn) For a complete list of changes see: https://github.com/pdezwart/php-amqp/compare/v1.0.9...v1.0.10
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.9</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-11-13</date>
+ <notes>
+1.0.9 Release: * Fix pecl relase
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.8</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-11-12</date>
+ <notes>
+1.0.8 Release: * Skip var_dump test on PHP 5.2 * Initialize consumer tag string length to zero * Support connection time outs * Adding consumer_tag parameter to AMQPQueue::cancel * Clean up error code handling
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.7</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-09-10</date>
+ <notes>
+1.0.7 Release: * Adding missing macros
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.6</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-09-10</date>
+ <notes>
+1.0.6 Release: * 62354: Segmentation fault when printing or dumping an object that contains an AMQP object * Adding in missing tests * Fixing release number in PHP information * Adding .gitignore info for Git users * Cleaning up debug handling
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.5</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-08-26</date>
+ <notes>
+1.0.5 Release: * 62696: Incorrect exchange type * Handles server connections being closed during consume and publish correctly * 62628: Exception thrown in consume will lock PHP * 61533: Segmentation fault when instantiating channel, queue or exchange with wrong object, then using it
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.4</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-07-18</date>
+ <notes>
+1.0.4 Release: * 62549: Fixing broken persistent connection * 62412: Fixing segfault due to destruction order * 62411: Fixing declaration overload bug * 62410: Fixing declaration overload for 5.4 * 61337: Adding License file * 61749: Fixing handling for binary content in envelope * 62087: Adding appropriate version information * 62354: Enabling debugging dumping of objects * 61351: Updating min PHP version requirements to 5.2.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.3</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-05-19</date>
+ <notes>
+1.0.3 Release: * Fixing compilation issue with PHP 5.4 * Memory leak when using AMQPQueue::get from a queue with no messages
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.1</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-03-02</date>
+ <notes>
+1.0.1 Release:Fixed bug: * 61247: Allow queue creation with empty queue name, and return auto generated name * 61127: Segmentation fault when cleaning up an AMQPChannel without calling AMQPConnection::connect first
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>1.0.0</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <date>2012-02-15</date>
+ <notes>
+1.0.0 Release:Changed/finalized API signature: * Exposing AMQPChannel * Exposing AMQPEnvelope * Exposing more queue and exchange arguments and flags * Exposing basic.qosAdded persistent connectionsCleaned up codebaseFixed memory leaks and segmentation faults
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.3.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2011-09-08</date>
+ <notes>
+0.3.1 Release:Fixed bug: * 24323: Cannot get the name for auto-named reply-to queues
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.3.0</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2011-06-09</date>
+ <notes>
+0.3.0 Release:Fixed memory leaks in many functions (courtesy Jonathan Tansavatdi and Andy Wick)Fixed consume method to return proper valuesCleaned up variable usageFixed bugs: * 22638: Unexpected exit code 1 with AMQPQueue::consume() * 22698: AMQPQueue::consume
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.2.2</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2011-01-02</date>
+ <notes>
+0.2.2 Release:Made extension compatible with PHP lt 5.3 (courtesy John Skopis)Fixed wrong typing of message properties (courtesy John Skopis)
+0.2.0 Release:Works with AMQP 0-8 and 0-9-1 (used by RabbitMQ 2.*)Modified AMQPConnection object: * Requires call to 'connect' method to connect (no longer connects on instantiation) * Added support for disconnect and reconnect * Added helper setters for port, host, vhost, login and passwordImproved consume method to block for MIN messages, and try to get MAX messages if availableFixed zval descoping bugsFixed bugs: * 17809: Couldn't compile pecl extension under PHP 5.3 * 17831: Segmentation fault when the exchange doesn't exists * 19707: AMQPQueue::get() doesn't return the message * 19840: Connection Exception
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.1.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2010-08-19</date>
+ <notes>
+Updating extension to work with new rabbitmq-c library