From 316175e5c017406dedd55c3c4e331b45752e2b96 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Wed, 10 Mar 2021 11:25:02 +0100 Subject: [PATCH] producer sends token in a separate send --- producer/api/cpp/src/request_handler_tcp.cpp | 8 +++++++- .../cpp/unittests/test_request_handler_tcp.cpp | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/producer/api/cpp/src/request_handler_tcp.cpp b/producer/api/cpp/src/request_handler_tcp.cpp index 157c1212e..e6f105d01 100644 --- a/producer/api/cpp/src/request_handler_tcp.cpp +++ b/producer/api/cpp/src/request_handler_tcp.cpp @@ -13,12 +13,18 @@ RequestHandlerTcp::RequestHandlerTcp(ReceiverDiscoveryService* discovery_service } Error RequestHandlerTcp::Authorize(const std::string& source_credentials) { - GenericRequestHeader header{kOpcodeAuthorize, 0, 0, 0, source_credentials.c_str()}; + GenericRequestHeader header{kOpcodeAuthorize, 0, 0, source_credentials.size(), ""}; Error err; io__->Send(sd_, &header, sizeof(header), &err); if(err) { return err; } + + io__->Send(sd_, (void*) source_credentials.c_str(), (size_t) header.meta_size, &err); + if (err) { + return err; + } + return ReceiveResponse(header, nullptr); } diff --git a/producer/api/cpp/unittests/test_request_handler_tcp.cpp b/producer/api/cpp/unittests/test_request_handler_tcp.cpp index 25a88248b..536aee478 100644 --- a/producer/api/cpp/unittests/test_request_handler_tcp.cpp +++ b/producer/api/cpp/unittests/test_request_handler_tcp.cpp @@ -195,7 +195,7 @@ void RequestHandlerTcpTests::ExpectFailAuthorize(bool only_once) { int i = 0; for (auto expected_sd : expected_sds) { EXPECT_CALL(mock_io, - Send_t(expected_sd, M_CheckSendRequest(asapo::kOpcodeAuthorize, 0, 0, expected_beamtime_id, + Send_t(expected_sd, M_CheckSendRequest(asapo::kOpcodeAuthorize, 0, 0, "", ""), sizeof(asapo::GenericRequestHeader), _)) .WillOnce( @@ -203,6 +203,13 @@ void RequestHandlerTcpTests::ExpectFailAuthorize(bool only_once) { testing::SetArgPointee<3>(nullptr), Return(sizeof(asapo::GenericRequestHeader)) )); + EXPECT_CALL(mock_io, + Send_t(expected_sd, _,strlen(expected_beamtime_id), _)) + .WillOnce( + DoAll( + testing::SetArgPointee<3>(nullptr), + Return(strlen(expected_beamtime_id)) + )); EXPECT_CALL(mock_io, Receive_t(expected_sd, _, sizeof(asapo::SendResponse), _)) .InSequence(seq_receive[i]) @@ -236,7 +243,7 @@ void RequestHandlerTcpTests::ExpectOKAuthorize(bool only_once) { int i = 0; for (auto expected_sd : expected_sds) { EXPECT_CALL(mock_io, - Send_t(expected_sd, M_CheckSendRequest(asapo::kOpcodeAuthorize, 0, 0, expected_beamtime_id, + Send_t(expected_sd, M_CheckSendRequest(asapo::kOpcodeAuthorize, 0, 0, "", ""), sizeof(asapo::GenericRequestHeader), _)) .WillOnce( @@ -244,6 +251,13 @@ void RequestHandlerTcpTests::ExpectOKAuthorize(bool only_once) { testing::SetArgPointee<3>(nullptr), Return(sizeof(asapo::GenericRequestHeader)) )); + EXPECT_CALL(mock_io, + Send_t(expected_sd, _,strlen(expected_beamtime_id), _)) + .WillOnce( + DoAll( + testing::SetArgPointee<3>(nullptr), + Return(strlen(expected_beamtime_id)) + )); EXPECT_CALL(mock_io, Receive_t(expected_sd, _, sizeof(asapo::SendResponse), _)) .InSequence(seq_receive[i]) -- GitLab