diff --git a/src/plain_mechanism.cpp b/src/plain_mechanism.cpp index d235dfa9..d514db7d 100644 --- a/src/plain_mechanism.cpp +++ b/src/plain_mechanism.cpp @@ -121,11 +121,10 @@ bool zmq::plain_mechanism_t::is_handshake_complete () const int zmq::plain_mechanism_t::hello_command (msg_t *msg_) const { - // TODO: fetch these from options - const std::string username = "username"; - const std::string password = "password"; - + const std::string username = options.plain_username; zmq_assert (username.length () < 256); + + const std::string password = options.plain_password; zmq_assert (password.length () < 256); const size_t command_size = 8 + 1 + username.length () + @@ -145,8 +144,6 @@ int zmq::plain_mechanism_t::hello_command (msg_t *msg_) const memcpy (ptr, password.c_str (), password.length ()); ptr += password.length (); - // TODO: check username and password - return 0; } @@ -202,6 +199,8 @@ int zmq::plain_mechanism_t::process_hello_command (msg_t *msg_) return -1; } + // TODO: Add user authentication + return 0; } diff --git a/src/stream_engine.cpp b/src/stream_engine.cpp index 4c604db8..f9a0c115 100644 --- a/src/stream_engine.cpp +++ b/src/stream_engine.cpp @@ -455,7 +455,10 @@ bool zmq::stream_engine_t::handshake () else { outpos [outsize++] = 0; // Minor version number memset (outpos + outsize, 0, 20); - memcpy (outpos + outsize, "NULL", 4); + if (options.mechanism == ZMQ_NULL) + memcpy (outpos + outsize, "NULL", 4); + else + memcpy (outpos + outsize, "PLAIN", 5); outsize += 20; memset (outpos + outsize, 0, 32); outsize += 32; @@ -529,7 +532,8 @@ bool zmq::stream_engine_t::handshake () } else if (memcmp (greeting_recv + 12, "PLAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0) { - mechanism = new (std::nothrow) plain_mechanism_t (options, as_server); + mechanism = new (std::nothrow) + plain_mechanism_t (options, options.plain_server); alloc_assert (mechanism); } else {