From 64cf5c2334f8b58dc0395b1ad40ca5f5bcf86962 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 9 Mar 2020 17:49:06 -0700 Subject: [PATCH] drop SockAddr from public API and fix UDP search source --- src/pvxs/source.h | 6 +++--- src/server.cpp | 1 + src/serverchan.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pvxs/source.h b/src/pvxs/source.h index ccb9956..a2b2d2e 100644 --- a/src/pvxs/source.h +++ b/src/pvxs/source.h @@ -186,15 +186,15 @@ struct PVXS_API Source { private: typedef std::vector _names_t; _names_t _names; - SockAddr _src; + char _src[24]; friend struct Server::Pvt; friend struct impl::ServerConn; public: _names_t::iterator begin() { return _names.begin(); } _names_t::iterator end() { return _names.end(); } - //! The Client endpoint address in "X.X.X.X:Y" format. - const SockAddr& source() const { return _src; } + //! The Client endpoint address + const char* source() const { return _src; } }; /** Called each time a client polls for the existance of some Channel names. * diff --git a/src/server.cpp b/src/server.cpp index 7435ad4..b65c360 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -433,6 +433,7 @@ void Server::Pvt::onSearch(const UDPManager::Search& msg) searchOp._names[i]._name = msg.names[i].name; searchOp._names[i]._claim = false; } + ipAddrToDottedIP(&msg.server->in, searchOp._src, sizeof(searchOp._src)); { auto G(sourcesLock.lockReader()); diff --git a/src/serverchan.cpp b/src/serverchan.cpp index 0dc0b2c..27a4a37 100644 --- a/src/serverchan.cpp +++ b/src/serverchan.cpp @@ -204,7 +204,8 @@ void ServerConn::handle_SEARCH() from_wire(M, nchan); server::Source::Search op; - op._src = peerAddr; + strncpy(op._src, peerName.c_str(), sizeof(op._src)-1); + op._src[sizeof(op._src)-1] = '\0'; std::vector> nameStorage(nchan); op._names.resize(nchan);