| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
They're hard to keep in sync with .clang-format or other tools.
|
|
|
|
|
|
| |
compatible int.
Signed-off-by: kokan <peter.kokai@balabit.com>
|
| |
|
| |
|
|
|
|
|
|
| |
Add a #define for AMQP_DEFAULT_VHOST pointing to "/", which is the
default vhost used by the RabbitMQ broker. This makes the code a bit
more readable, especially in example code.
|
|
|
|
|
| |
The documentation for amqp_consume_message refers to AMQP_STATUS_UNEXPECTED_FRAME, but this value doesn't exist. The correct value appears to be AMQP_STATUS_UNEXPECTED_STATE to match the implementation and amqp_consumer.c example.
https://github.com/alanxz/rabbitmq-c/blob/master/examples/amqp_consumer.c#L85
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor amqp_socket_open_inner so that the socket connection logic is
in it's own OS-specific socket_connect function, and the host resolution
and retry logic calls this. This makes the socket connection logic
easier to understand and reduces the number of win32 #ifdefs.
This also fixes an issue where multiple hostnames are not tried if
connect doesn't fail immediately.
Fixes #430
|
| |
|
|
|
|
|
|
| |
- Enable TCP Keep Alive for rabbitmq client
- Helps in cases when the connection is conntracked or there is NAT
in between
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduced with commit 2bc1f9b1b0 (lib: use MSG_MORE on Linux for
basic.publish), amqp_basic_publish() sets MSG_MORE on all but the
last send() syscall it triggers on the TCP socket to improve
performance. However, if no message body is provided, no completing
call without MSG_MORE follows, keeping the TCP packet pending.
On Linux, this may introduce a message send delay, until the kernel
sends out the data anyway after 200ms. This may add a significant
delay if a consumer is waiting for such an empty (confirmation)
message.
|
|
|
|
| |
Fixes #403
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
SRWLOCK allows for static-initialization of the lock, matching the
semantics of pthread_mutex that is used in OpenSSL bits, simplifying the
code somewhat.
Note that this API only became available in Windows Vista and newer.
Given Windows XP and Windows Server 2003 are no longer supported by
Microsoft, using this newer API is an acceptable tradeoff.
|
|
|
|
|
|
|
| |
Add an OpenSSL BIO that ignores SIGPIPE by passing MSG_NOSIGNAL to the
send() and recv() calls on platforms that support it.
Fixes #401
|
|
|
|
|
|
|
| |
NULL check in empty_blockless was happening after its used. This
would've likely resulted in crashes if it was hit.
Found with PVS Studio run.
|
|
|
|
|
|
|
|
|
|
|
| |
By default the RabbitMQ broker sets a tunable timeout of 10 seconds
from socket-open to successful handshake. This introduces a similar
login timeout on the client side. If the login does not complete within
this timeout, amqp_login and friends will return AMQP_STATUS_TIMEOUT and
the connection will be considered dead.
Two new functions amqp_set_handshake_timeout and
amqp_get_handshake_timeout are introduced to tune this behavior.
|
|
|
|
|
| |
amqp_get_socket, amqp_get_server_properties, amqp_get_client_properites
were missing AMQP_CALL decorator.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Passing a NULL pointer to the src parameter of memcpy results in
undefined behavior even if the len parameter is 0. Fix is to check for
the length before attempting to memcpy.
|
|
|
|
|
|
|
| |
Add docs to amqp_login* functions on how to correctly use
AMQP_SASL_METHOD_EXTERNAL to authenticate to the broker.
Fixes #349
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Check bounds on channel_max, frame_max, and heartbeat arguments to
amqp_login* functions.
|
|
|
|
|
| |
Check for code parameter being between 0 -> UINT16_MAX in
amqp_connection_close() and amqp_channel_close() functions.
|
|
|
|
|
| |
Add internal function to construct amqp_rpc_reply_t that are library
errors.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Use /Z7 with MSVC to embed debug information in the static library
instead of generating a .pdb file.
|
|
|
|
|
|
|
| |
The documentation of amqp_basic_publish incorrectly states that the
broker will respond with a basic.reject method in case of failures when
the mandatory or immediate flags are set. Actually, this is the
basic.return method.
|
|
|
|
|
|
|
| |
Cygwin defines TCP_NOPUSH, but fails with an error when you try to use
it. Disable it on Cygwin.
Fixes #335
|
|
|
|
|
|
|
| |
Use temporary amqp_bytes_t to encode properties instead of using the
encoded input parameter.
Coverity CID: 1345884
|
|
|
|
|
|
|
|
| |
amqp_ssl_socket_verify_hostname returns 1 on success, 0 on not found,
and -1 on error. Refactor this code to be less error-prone and not use
magic numbers in return values.
Fixes #330
|
| |
|
| |
|
|
|
|
|
| |
Use amqp_cstring_bytes to construct string instead of doing it manually
as this is error-prone.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
According to "https://www.openssl.org/docs/manmaster/ssl/SSL_get_verify_result.html",
to verify SSL connection result, SSL_get_verify_result() needs to be
called with SSL_get_peer_certificate(). In default mode, which
verify_peer and verify_hostname are activated, then there is no problem
because in verify_hostname, the existence of certificate is confirmed.
However, it is possible that the user want to verify_peer,
but not verify_host. In such case, it is not working as they wanted.
Because with invalid certificate, the attacker can bypass certificate validity check.
|
|
|
|
| |
Issue surfaced by clang static-analyzer v3.5.
|