From aadfd21038b6b258c11a6b22af77676f7cd592ce Mon Sep 17 00:00:00 2001 From: Yang Pan Date: Tue, 20 Aug 2024 18:00:27 +0800 Subject: [PATCH] fix bug of expression --- src/core/expression_calculator.cpp | 8 ++++---- src/core/socket_multi_io.cpp | 9 +++++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/expression_calculator.cpp b/src/core/expression_calculator.cpp index 6f4e219a..eeb29eef 100644 --- a/src/core/expression_calculator.cpp +++ b/src/core/expression_calculator.cpp @@ -272,15 +272,15 @@ namespace aris::core if (m1.imp_->is_row_major_){ if (m2.imp_->is_row_major_) - aris::core::s_mm(m1.m(), m2.n(), m1.n(), m1.data(), 1, m2.data(), 1, ret.data(), 1); + aris::core::s_mm(m1.m(), m2.n(), m1.n(), m1.data(), m1.n(), m2.data(), m2.n(), ret.data(), ret.n()); else - aris::core::s_mmNT(m1.m(), m2.n(), m1.n(), m1.data(), 1, m2.data(), 1, ret.data(), 1); + aris::core::s_mmNT(m1.m(), m2.n(), m1.n(), m1.data(), m1.n(), m2.data(), m2.m(), ret.data(), ret.n()); } else{ if (m2.imp_->is_row_major_) - aris::core::s_mmTN(m1.m(), m2.n(), m1.n(), m1.data(), 1, m2.data(), 1, ret.data(), 1); + aris::core::s_mmTN(m1.m(), m2.n(), m1.n(), m1.data(), m1.m(), m2.data(), m2.n(), ret.data(), ret.n()); else - aris::core::s_mmTT(m1.m(), m2.n(), m1.n(), m1.data(), 1, m2.data(), 1, ret.data(), 1); + aris::core::s_mmTT(m1.m(), m2.n(), m1.n(), m1.data(), m1.m(), m2.data(), m2.m(), ret.data(), ret.n()); } } else{ diff --git a/src/core/socket_multi_io.cpp b/src/core/socket_multi_io.cpp index 3ccc6730..4d913bed 100644 --- a/src/core/socket_multi_io.cpp +++ b/src/core/socket_multi_io.cpp @@ -2203,6 +2203,7 @@ namespace aris::core{ case Type::TCP: { aris::core::Msg send_msg = data; send_msg.setDestinationSockaddrin(&imp_->sock_datas_.at(sock).remote_addr_); + send_msg.setSourceSockaddrin(&imp_->sock_datas_.at(sock).local_addr_); auto ret = aris_send(sock, reinterpret_cast(&send_msg.header()), send_msg.size() + sizeof(MsgHeader), 0); if (ret < 0) ARIS_LOG(SOCKET_SERVER_SEND_MSG_ERROR, ret); @@ -2212,6 +2213,7 @@ namespace aris::core{ case Type::WEB: { aris::core::Msg send_msg = data; send_msg.setDestinationSockaddrin(&imp_->sock_datas_.at(sock).remote_addr_); + send_msg.setSourceSockaddrin(&imp_->sock_datas_.at(sock).local_addr_); auto packed_data = pack_data_server2(reinterpret_cast(&send_msg.header()), send_msg.size() + sizeof(aris::core::MsgHeader)); auto ret = aris_send(sock, packed_data.data(), static_cast(packed_data.size()), 0); if (ret < 0) @@ -2219,9 +2221,12 @@ namespace aris::core{ return ret; } case Type::UDP: { - const struct sockaddr_in* addr = (data.destinationIpStr() == "0.0.0.0") ? &imp_->client_addr_ : (const struct sockaddr_in*)data.destinationSockaddrin(); + aris::core::Msg send_msg = data; + send_msg.setSourceSockaddrin(&imp_->sock_datas_.at(sock).local_addr_); + + const struct sockaddr_in* addr = (send_msg.destinationIpStr() == "0.0.0.0") ? &imp_->client_addr_ : (const struct sockaddr_in*)send_msg.destinationSockaddrin(); - if (sendto(sock, reinterpret_cast(&data.header()), data.size() + sizeof(MsgHeader), 0, (const struct sockaddr*)addr, sizeof(imp_->client_addr_)) == -1) + if (sendto(sock, reinterpret_cast(&send_msg.header()), send_msg.size() + sizeof(MsgHeader), 0, (const struct sockaddr*)addr, sizeof(imp_->client_addr_)) == -1) THROW_FILE_LINE("SocketMultiIo failed sending data, because network failed\n"); else return 0;