--- opensips-1.5.3-notls/modules/dialog/dialog.c	2009-07-16 18:59:00.000000000 +0300
+++ /usr/src/opensips-1.5.3-notls/modules/dialog/dialog.c	2009-09-27 17:10:26.237907280 +0200
@@ -65,6 +65,8 @@
 #include "dlg_profile.h"
 #include "dlg_vals.h"
 
+#include "../../parser/parse_from.h"
+
 MODULE_VERSION
 
 
@@ -160,7 +162,7 @@
 	{"store_dlg_value",(cmd_function)w_store_dlg_value,   2,fixup_dlg_sval,
 			0, REQUEST_ROUTE| FAILURE_ROUTE | ONREPLY_ROUTE | BRANCH_ROUTE },
 	{"fetch_dlg_value",(cmd_function)w_fetch_dlg_value,   2,fixup_dlg_fval,
-			0, REQUEST_ROUTE| FAILURE_ROUTE | ONREPLY_ROUTE | BRANCH_ROUTE },
+			0, REQUEST_ROUTE| FAILURE_ROUTE | ONREPLY_ROUTE | BRANCH_ROUTE | LOCAL_ROUTE },
 	{"load_dlg",  (cmd_function)load_dlg,   0, 0, 0, 0},
 	{0,0,0,0,0,0}
 };
@@ -878,8 +880,10 @@
 
 	sp_dest = (pv_spec_t *)result;
 
-	if ( (dlg=get_current_dialog())==NULL )
+	unsigned int dir;
+	if ( ((dlg=get_current_dialog())==NULL) && ((dlg=get_dlg(&(msg->callid->body),&(get_from(msg)->tag_value),&(get_to(msg)->tag_value),&dir))==NULL) ) {
 		return -1;
+	}
 
 	if (fetch_dlg_value( dlg, (str*)name, &val) ) {
 		LM_ERR("failed to fetch dialog value <%.*s>\n",
