@@ -158,9 +158,11 @@ void OpAmp::sendInitialAgentToServer() {
158158 throw std::runtime_error (" Failed to serialize AgentToServer initial message" );
159159 }
160160
161- auto callback = [self = shared_from_this ()](int16_t responseCode, std::span<std::byte> data) {
162- ELOG_DEBUG (self->log_ , OPAMP, " sendInitialAgentToServer response code: {}, data size: {}" , responseCode, data.size_bytes ());
163- self->handleServerToAgent (reinterpret_cast <const char *>(data.data ()), data.size_bytes ());
161+ auto callback = [weak_self = weak_from_this ()](int16_t responseCode, std::span<std::byte> data) {
162+ if (auto self = weak_self.lock ()) {
163+ ELOG_DEBUG (self->log_ , OPAMP, " sendInitialAgentToServer response code: {}, data size: {}" , responseCode, data.size_bytes ());
164+ self->handleServerToAgent (reinterpret_cast <const char *>(data.data ()), data.size_bytes ());
165+ }
164166 };
165167
166168 transport_->enqueue (endpointHash_, {reinterpret_cast <std::byte *>(payload.data ()), payload.length ()}, callback);
@@ -185,9 +187,11 @@ void OpAmp::sendHeartbeat() {
185187 throw std::runtime_error (" Failed to serialize AgentToServer heartbeat message" );
186188 }
187189
188- auto callback = [self = shared_from_this ()](int16_t responseCode, std::span<std::byte> data) {
189- ELOG_DEBUG (self->log_ , OPAMP, " sendHeartbeat response code: {} payload size: {}" , responseCode, data.size ());
190- self->handleServerToAgent (reinterpret_cast <const char *>(data.data ()), data.size_bytes ());
190+ auto callback = [weak_self = weak_from_this ()](int16_t responseCode, std::span<std::byte> data) {
191+ if (auto self = weak_self.lock ()) {
192+ ELOG_DEBUG (self->log_ , OPAMP, " sendHeartbeat response code: {} payload size: {}" , responseCode, data.size ());
193+ self->handleServerToAgent (reinterpret_cast <const char *>(data.data ()), data.size_bytes ());
194+ }
191195 };
192196 transport_->enqueue (endpointHash_, {reinterpret_cast <std::byte *>(payload.data ()), payload.length ()}, callback);
193197}
0 commit comments