| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Check for recv heartbeats when blocking on sending to the socket. A blocked send
can indicate that the broker is applying backpressure to publishers, it could
also be that the TCP connection is dead, checking for recv heartbeats can give
an earlier indication that the connection is broken.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor frame encoding into its own function. This is in preparation for doing
heartbeats while waiting for the socket to become writable.
As a de-optimization: stop using writev for the body frames. This now requires
memcpy'ing the whole message body, which is an additional copy. On the flip side
this is already done behind the scenes on Linux and anything using OpenSSL. This
may also improve performance as fewer OS calls are made when writev doesn't
support SO_NOSIGNAL.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Refactor the heartbeat timeout code to hopefully simplify it and hopefully make
it less hairy to deal with in the future.
|
|
|
|
|
| |
Rename amqp_timer_t related functions to improve readability of the code and
clarify what they do.
|
|
|
|
| |
Rename the files to better reflect the functions that they contain.
|
|
|
|
| |
COPY_ONLY should be COPYONLY. (Yay developer warnings).
|
|
|
|
|
| |
This one only shows up when send() does a partial read, which is why it wasn't
caught immediately. Need some better tests for this.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of passing around a start time and timeout interval, calculate this
early and pass around the timeout value (as a implementation detail), then
calculate against current timestamp. This simplifies the code, gives a more
realistic 'timeout' for the function at the cost of potentially a few more timer
pings.
Conflicts:
librabbitmq/amqp_socket.c
|
| |
|
| |
|
| |
|
|
|
|
|
| |
When tcp socket is in non-blocking mode, return
AMQP_STATUS_PRIVATE_SOCKET_NEEDREAD when socket doesn't have any data in it.
|
| |
|
| |
|
|
|
|
| |
rabbitmq-c doesn't currently work as a static lib on Win32.
|
|
|
|
|
| |
Tests require building statically, and its not possible to build statically on
Win32.
|
| |
|
| |
|
|
|
|
|
| |
Add error codes and associated error strings when the broker does not support
the desired SASL method.
|
| |
|
|
|
|
|
| |
This gets around issues with symbol visibility issues while testing functions
that are not declared to be visibile outside the library.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Add a tests that ensures that we add error message strings as we add new
amqp_status_enum values.
|
| |
|
|
|
|
|
|
|
|
| |
Alternate Names DNS entries.
Additional check for entries in SSL certificate.
Signed-off-by: Yevhen Kyriukha <kirgene@gmail.com>
|
| |
|
|
|
|
|
| |
Remove extra text from documentation of amqp_basic_publish that was left there
from an earlier edit.
|
|
|
|
|
|
|
| |
For consistency sake, allocate and return a struct when decoding methods that
don't have fields.
Fixes #225
|
|
|
|
| |
C89 compilers can't do mixed definitions and code.
|
|
|
|
|
|
|
| |
Check to state of socket when doing open/read/write/close to prevent double-open
and double-close issues with the socket implementation.
Fixes #228
|
|
|
|
|
|
|
|
| |
Enable auto_delete and internal parameters of amqp_exchange_declare() in
codegen. These were once not generated because RabbitMQ did not support these
parameters. The broker now supports these and so should we.
This fixes #218
|
|
|
|
| |
Doing this because the next change will cause a ton of diffs otherwise.
|
|
|
|
|
| |
In tools/common.c `#ifdef WITH_SSL` is used but never defined if SSL support is
desired.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If you have a single consumer C₁ and 10 messages are published, all 10
will be streamed to that one customer. Assume each message takes a few
minutes to be handled.
If a second consumer C₂ comes up before C₁ is able to process its first
message, it will stay idle until new messages are published, while C₁
will still have to process the other 9 messages after finishing with the
first one.
If both consumers were started with `--messages 1`, C₁ would only fetch
a single message, and start handling it; C₂ would start and already
receive the second message .
|