diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp
index 0f618d4198a95b76864339f560dd993d99d6ebfa..6c53dfb149b9ea25c3d2fe74f5c31479294ec559 100644
--- a/src/sip/sipvoiplink.cpp
+++ b/src/sip/sipvoiplink.cpp
@@ -227,27 +227,27 @@ transaction_request_cb(pjsip_rx_data* rdata)
 
         if (request.find("NOTIFY") != std::string_view::npos) {
             if (body and body->data) {
-                int newCount {0};
-                int oldCount {0};
-                int urgentCount {0};
-
-                std::string sp(static_cast<char*>(body->data), body->len);
-                auto pos = sp.find("Voice-Message: ");
-                sp = sp.substr(pos);
-
-                int ret = sscanf(sp.c_str(),
-                                 "Voice-Message: %d/%d (%d/",
-                                 &newCount,
-                                 &oldCount,
-                                 &urgentCount);
-
-                // According to rfc3842
-                // urgent messages are optional
-                if (ret >= 2)
-                    emitSignal<DRing::CallSignal::VoiceMailNotify>(account_id,
-                                                                   newCount,
-                                                                   oldCount,
-                                                                   urgentCount);
+                std::string_view body_view(static_cast<char*>(body->data), body->len);
+                auto pos = body_view.find("Voice-Message: ");
+                if (pos != std::string_view::npos) {
+                    int newCount {0};
+                    int oldCount {0};
+                    int urgentCount {0};
+                    std::string sp(body_view.substr(pos));
+                    int ret = sscanf(sp.c_str(),
+                                    "Voice-Message: %d/%d (%d/",
+                                    &newCount,
+                                    &oldCount,
+                                    &urgentCount);
+
+                    // According to rfc3842
+                    // urgent messages are optional
+                    if (ret >= 2)
+                        emitSignal<DRing::CallSignal::VoiceMailNotify>(account_id,
+                                                                       newCount,
+                                                                       oldCount,
+                                                                       urgentCount);
+                }
             }
         } else if (request.find("MESSAGE") != std::string_view::npos) {
             // Reply 200 immediately (RFC 3428, ch. 7)