瀏覽代碼

dlgs: fix counting dialogs function

- count the dialog in initial state
- GH #2568
Daniel-Constantin Mierla 4 年之前
父節點
當前提交
6376e24960
共有 2 個文件被更改,包括 7 次插入3 次删除
  1. 6 3
      src/modules/dlgs/dlgs_mod.c
  2. 1 0
      src/modules/dlgs/dlgs_records.c

+ 6 - 3
src/modules/dlgs/dlgs_mod.c

@@ -250,13 +250,16 @@ static int w_dlgs_update(sip_msg_t *msg, char *p1, char *p2)
  */
 static int ki_dlgs_count(sip_msg_t *msg, str *vfield, str *vop, str *vdata)
 {
+	int ret;
+
 	LM_DBG("counting by: [%.*s] [%.*s] [%.*s]\n", vfield->len, vfield->s,
 			vop->len, vop->s, vdata->len, vdata->s);
-	if(dlgs_count(msg, vfield, vop, vdata) < 0) {
-		return -1;
+	ret = dlgs_count(msg, vfield, vop, vdata);
+	if(ret <= 0) {
+		return (ret-1);
 	}
 
-	return 1;
+	return ret;
 }
 
 /**

+ 1 - 0
src/modules/dlgs/dlgs_records.c

@@ -340,6 +340,7 @@ int dlgs_add_item(sip_msg_t *msg, str *src, str *dst, str *data)
 		prev->next = nitem;
 	}
 	dsht->slots[idx].esize++;
+	dlgs_update_stats(&dsht->slots[idx].astats, nitem->state, 1);
 	lock_release(&dsht->slots[idx].lock);
 	return 0;
 }