-
Notifications
You must be signed in to change notification settings - Fork 77
Open
Description
Malamute cores if 2 clients connect with the same address instead of expiring the older client.
Here is patch.
Test case for crash is below.
Thanks.
diff --git a/src/mlm_server.c b/src/mlm_server.c
index f2f6cd2..597820c 100644
--- a/src/mlm_server.c
+++ b/src/mlm_server.c
@@ -714,7 +714,7 @@ client_expired (client_t *self)
static void
client_closed_connection (client_t *self)
{
- if (*self->address)
+ if (self->address)
zsys_info ("client %u address='%s' - closed connection", self->unique_id, self->address);
}
#include <malamute.h>
int main (int argc, char *argv [])
{
int rc=0;
// Let's start a new Malamute broker
zactor_t *broker = zactor_new (mlm_server, NULL);
// Switch on verbose tracing... this gets a little overwhelming so you
// can comment or delete this when you're bored with it:
zsock_send (broker, "s", "VERBOSE");
zstr_sendx (broker, "BIND", "tcp://*:12345", NULL);
mlm_client_t *client1 = mlm_client_new ();
assert (client1);
rc = mlm_client_connect (client1, "tcp://127.0.0.1:12345", 1000, "client");
assert (rc == 0);
mlm_client_t *client2 = mlm_client_new ();
assert (client2);
rc = mlm_client_connect (client2, "tcp://127.0.0.1:12345", 1000, "client");
assert (rc == 0);
mlm_client_destroy(&client1);
mlm_client_destroy(&client2);
zactor_destroy(&broker);
return 0;
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels