Commit Graph

377 Commits

Author SHA1 Message Date
Martijn Otto 17693ef549 Correctly remove the dependency files on clean and fix frame errors on architectures where chars default to unsigned,
fixes issue #52
2016-07-01 16:00:44 +02:00
Rafal Goslawski f3343ad1cb Bump version to 2.6.0 2016-06-30 11:19:54 +02:00
Martijn Otto b91e0589f6 Updated cmake lists and added include, closes issue #75 2016-06-28 14:14:07 +02:00
Martijn Otto 2f1851728c Merge pull request #72 from XeCycle/fionread-solaris
Some portability fixes for Solaris-like systems
2016-06-27 10:57:24 +02:00
Martijn Otto 3292424daa Merge branch 'deferredconsumerbase-missing-include' of git://github.com/javeme/AMQP-CPP 2016-06-27 10:53:13 +02:00
Martijn Otto d911d71dfa Removed the ugly typedef 2016-06-27 10:52:58 +02:00
Martijn Otto 45131a1884 Merge branch 'javeme-aligned_storage-crash' 2016-06-27 10:48:51 +02:00
javeme 5c3ba7b00a Program crashes when receiving a message due to memory corruption
crashes due to the wrong way using aligned_storage.

Steps to reproduce:
1. Start a consumer
  channel.consume(queue, tag).onMessage(msgCallback)
2. Send a message to the consumer
3. The program crashes

Environment:
Windows 7 / VS2010

The reason:
The Windows prompted to memory corruption, I found some strange phenomenon
about stack_ptr<Message>, such as:
  1.sizeof(stack_ptr<Message>) is equal to 2
  2.stack_ptr._initialized becomes true after construct() called (actually,
    it never has been assigned true, please see [1])

Finally I found that the root cause was stack_ptr._data, we directly used
aligned_storage rather than aligned_storage::type[2] as the type of _data.
so the _data was just an empty struct, and subsequent operations were
performed in illegal memory. It eventually led to the crash.

This patch we fixed the bug and add "_initialized = true" at the end of the
method stack_ptr::construct().

[1] https://github.com/CopernicaMarketingSoftware/AMQP-CPP/blob/master/include/stack_ptr.h#L83
[2] http://www.cplusplus.com/reference/type_traits/aligned_storage/
2016-06-27 02:03:15 +08:00
javeme 49eef84883 Bugfix: add missing include "includes.h" for deferredconsumerbase.cpp
When I compiled on the windows, there was a lot of errors like:
  error C2065: "xxx": undeclared identifier...
2016-06-27 00:37:31 +08:00
Carl Lei 55aba43078 portability fix for pow overload resolution
On Solaris the compiler is missing the template overload.
2016-06-25 20:15:44 +08:00
Carl Lei 6d71b73063 portability fix for FIONREAD on Solaris 2016-06-25 20:15:12 +08:00
Martijn Otto ba6b3e2923 Copied the methods to both implementations so they can return their concrete type 2016-06-23 16:02:04 +02:00
Martijn Otto 434a0fad52 Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP 2016-06-23 14:43:10 +02:00
Martijn Otto 2c60151d31 Only allocate a message and its data when a consumer wants to and allow consumers to receive the individual parts 2016-06-23 14:42:50 +02:00
Emiel Bruijntjes 5e88fd3e75 fixed reallocation bug 2016-06-22 13:49:49 +02:00
Emiel Bruijntjes 2a0b0de409 updated README to explain the connection::expected() method 2016-06-15 15:07:32 -04:00
Emiel Bruijntjes 3d9b5b444b fixed issues that caused reading data to be broken 2016-06-15 14:50:33 -04:00
Emiel Bruijntjes 99abd157e5 removed tcpbuffer and replaced it with a tcpoutbuffer 2016-06-15 13:41:14 -04:00
Emiel Bruijntjes bc01c82e80 added buffer 2016-06-15 13:32:40 -04:00
Emiel Bruijntjes 24c8527b5d added tcpinbuffer with much less allocation 2016-06-15 13:32:30 -04:00
Emiel Bruijntjes 6320e2ae0e added consistent-hash exchange (same as pull request #68) 2016-06-15 11:20:31 -04:00
Emiel Bruijntjes ec9630ced7 Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP 2016-06-15 07:27:11 -04:00
Emiel Bruijntjes 59830c659c added connection::maxFrame() and connection::expected() methods to give hints about the amount of data that the connection::parse() method ideally expects 2016-06-15 04:57:46 -04:00
Rafal Goslawski 70d9224dd6 Update Makefile 2016-06-14 14:32:58 +02:00
Jan Westerdiep 7384b521ac small legibility fixes 2016-06-10 15:21:10 +02:00
Emiel Bruijntjes 06afda3606 Update README.md 2016-04-25 09:08:30 +02:00
Emiel Bruijntjes e2c7ffdcc1 Merge pull request #63 from hoxnox/master
Bugfix: add missing include guards
2016-04-06 17:08:25 +02:00
hoxnox 15fa529bfd Bugfix: add missing include guards 2016-04-06 17:49:39 +03:00
Emiel Bruijntjes ae8985c0ca Merge pull request #60 from hoxnox/master
Buildfix: tcpconnection.cpp added to build sources
2016-03-29 09:35:38 +02:00
hoxnox 6e31cecdbd Buildfix: tcpconnection.cpp added to build sources 2016-03-27 22:17:40 +03:00
Emiel Bruijntjes ae3f6c4f54 Merge pull request #59 from elthariel/install_header
[cmake] Install headers
2016-03-22 09:21:32 +01:00
Emiel Bruijntjes 1681fd6072 Merge pull request #51 from indrekj/yosemite
Fix compiling on OS X Yosemite
2016-03-22 09:21:19 +01:00
Julien 'Lta' BALLET 90639c3715 Add missing trailing / and filter headers 2016-03-22 02:07:52 +01:00
Julien 'Lta' BALLET d88e9f8922 [cmake] Install headers 2016-03-22 01:39:32 +01:00
Rafal Goslawski daefbdeb00 Update Makefile 2016-03-16 10:43:24 +01:00
Aljar Meesters 70a7565c4e fixed bug when connection goes out of scope 2016-03-04 17:34:28 +01:00
Emiel Bruijntjes a5e86d4b95 Merge pull request #55 from swordflychen/master
fix `std:max` type mismatch
2016-02-22 16:38:41 +01:00
Rafal Goslawski 18cd6fc0c8 Bump version to 2.5.0 2016-01-15 14:52:13 +01:00
Martijn Otto 89c2075a5f Fix segfault when the handler is destructed from within a callback 2016-01-15 14:19:09 +01:00
Jerry Chen 2e350040b4 fix `std:max` type mismatch
env:
```
OS: Centos6.5 Linux 2.6.32-431.el6.i686
gcc: 4.8.2
```
make error:
```
g++ -Wall -c -I. -std=c++11 -g -fpic -o tcpconnection.o tcpconnection.cpp
In file included from tcpconnected.h:19:0,
                 from tcpresolver.h:22,
                 from tcpconnection.cpp:14:
tcpbuffer.h: In member function ‘ssize_t AMQP::TcpBuffer::receivefrom(int)’:
tcpbuffer.h:406:66: error: no matching function for call to ‘max(long int, int&)’
         if (result < available) buffer.resize(std::max(0L, result));
                                                                  ^
tcpbuffer.h:406:66: note: candidates are:
In file included from /usr/local/include/c++/4.8.2/bits/char_traits.h:39:0,
                 from /usr/local/include/c++/4.8.2/string:40,
                 from includes.h:14,
                 from tcpconnection.cpp:13:
/usr/local/include/c++/4.8.2/bits/stl_algobase.h:216:5: note: template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^
/usr/local/include/c++/4.8.2/bits/stl_algobase.h:216:5: note:   template argument deduction/substitution failed:
In file included from tcpconnected.h:19:0,
                 from tcpresolver.h:22,
                 from tcpconnection.cpp:14:
tcpbuffer.h:406:66: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long int’ and ‘int’)
         if (result < available) buffer.resize(std::max(0L, result));
                                                                  ^
...
```
2016-01-15 13:44:29 +08:00
Emiel Bruijntjes 25ce57818a Merge pull request #54 from brentnd/master
Add TcpHandler implementation for libevent
2016-01-10 13:07:49 +01:00
Brent Dimmig 89799f54e4 update readme with libevent handler details 2016-01-09 16:17:03 -05:00
Brent Dimmig bbfcf76f39 add TcpHandler implementation for libevent 2016-01-09 16:03:42 -05:00
Martijn Otto 18bf111eec fixed changing io events for libev 2016-01-04 16:53:22 +01:00
Emiel Bruijntjes 7de0fe94ac Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP 2016-01-04 10:38:44 +01:00
Emiel Bruijntjes c10d246cc8 updated bindQueue() example in README (fixes #53) 2016-01-04 10:38:36 +01:00
Toon Schoenmakers 09ad7b6cf4 How about we include libev before using the structs from libev? 2015-12-30 16:04:34 +01:00
Toon Schoenmakers d6f6dba660 Better to set multiple socket flags at once 2015-12-22 15:02:37 +01:00
Emiel Bruijntjes 226ef47beb socket connections have close-on-exit bit set 2015-12-14 20:20:03 +01:00
Emiel Bruijntjes e2ce7103aa disable the nagle algorithm to speed up write operations to the tcp connections (and dramatically improving write performance) fixes issue 50 2015-12-07 14:05:49 +01:00