diff --git a/third-party/pjproject/patches/0024-fork-dialog-183-early-media.patch b/third-party/pjproject/patches/0024-fork-dialog-183-early-media.patch
new file mode 100644
index 0000000000000000000000000000000000000000..385aa2dc804a20630adb2fba668b51f995cecd8a
--- /dev/null
+++ b/third-party/pjproject/patches/0024-fork-dialog-183-early-media.patch
@@ -0,0 +1,60 @@
+From 1ac54b7eb7504f23470f3536f06c201fa1dc9e22 Mon Sep 17 00:00:00 2001
+From: Lukasz Kotasa <lukasz.kotasa@genexis.eu>
+Date: Wed, 28 May 2025 14:24:37 +0200
+Subject: [PATCH] fork dialog 183 early media
+
+---
+ pjsip/src/pjsip/sip_ua_layer.c | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/pjsip/src/pjsip/sip_ua_layer.c b/pjsip/src/pjsip/sip_ua_layer.c
+index e6a7eaa..1f32367 100644
+--- a/pjsip/src/pjsip/sip_ua_layer.c
++++ b/pjsip/src/pjsip/sip_ua_layer.c
+@@ -751,6 +751,18 @@ retry_on_deadlock:
+     return PJ_TRUE;
+ }
+ 
++pjsip_dialog* dlg_fork(pjsip_dialog *dlg, pjsip_rx_data *res)
++{
++    pjsip_dialog *forked_dlg;
++    pj_status_t status;
++
++    /* Create forked dialog */
++    status = pjsip_dlg_fork(dlg, res, &forked_dlg);
++    if (status != PJ_SUCCESS)
++        return NULL;
++
++    return forked_dlg;
++}
+ 
+ /* On rx response notification.
+  */
+@@ -900,13 +912,21 @@ retry_on_deadlock:
+                     return PJ_TRUE;
+                 }
+             } else {
+-                dlg = dlg_set->dlg_list.next;
+-
+-                PJ_LOG(4,(THIS_FILE, 
++                if (st_code != 183){
++                    dlg = dlg_set->dlg_list.next;
++                    PJ_LOG(4,(THIS_FILE,
+                           "Unhandled forked %s from %s:%d, response will be "
+                           "handed over to the first dialog",
+                           pjsip_rx_data_get_info(rdata),
+                           rdata->pkt_info.src_name, rdata->pkt_info.src_port));
++                } else {
++                    // received forked 183 response, create forked dialog
++                    dlg = dlg_fork(dlg_set->dlg_list.next, rdata);
++                    if (!dlg) {
++                        PJ_LOG(4, (THIS_FILE, "Forking dialog for 183 response failed"));
++                        dlg = dlg_set->dlg_list.next;
++                    }
++                }
+             }
+ 
+         } else if (dlg == (pjsip_dialog*)&dlg_set->dlg_list) {
+-- 
+2.43.0
+