diff -urN opensips-2.1.2.orig/modules/msilo/msilo.c opensips-2.1.2.mod/modules/msilo/msilo.c --- opensips-2.1.2.orig/modules/msilo/msilo.c 2016-01-17 17:48:37.000000000 +0000 +++ opensips-2.1.2.mod/modules/msilo/msilo.c 2016-03-21 05:40:09.000000000 +0000 @@ -129,6 +129,7 @@ char* ms_contact = NULL; /*"Contact: \r\n";*/ char* ms_content_type = NULL; /*"Content-Type: text/plain\r\n";*/ char* ms_offline_message = NULL; /*"I'm offline."*/ +char* ms_mongodb_sub = "//mongodb"; /*String to search for*/ void** ms_from_sp = NULL; void** ms_contact_sp = NULL; void** ms_content_type_sp = NULL; @@ -141,6 +142,7 @@ int ms_use_contact = 1; int ms_add_date = 1; int ms_max_messages = 0; +int ms_use_mongodb = 0; static str ms_snd_time_avp_param = {NULL, 0}; int ms_snd_time_avp_name = -1; @@ -338,6 +340,10 @@ msilo_dbf.close(db_con); db_con = NULL; + if (strstr(ms_db_url.s,ms_mongodb_sub) != NULL) { + ms_use_mongodb = 1; + } + /* load the TM API */ if (load_tm_api(&tmb)!=0) { LM_ERR("can't load TM API\n"); @@ -477,8 +483,8 @@ struct to_body *pto, *pfrom; struct sip_uri puri; str duri, owner_s; - db_key_t db_keys[NR_KEYS-1]; - db_val_t db_vals[NR_KEYS-1]; + db_key_t db_keys[NR_KEYS-(ms_use_mongodb?0:1)]; + db_val_t db_vals[NR_KEYS-(ms_use_mongodb?0:1)]; db_key_t db_cols[1]; db_res_t* res = NULL; int nr_keys = 0, val, lexpire; @@ -683,6 +689,16 @@ db_vals[nr_keys].val.int_val = val; nr_keys++; + /* msgid*/ + if (ms_use_mongodb) { + srand((unsigned) val); + db_keys[nr_keys] = &sc_mid; + db_vals[nr_keys].type = DB_INT; + db_vals[nr_keys].nul = 0; + db_vals[nr_keys].val.int_val = val + (rand() % 50); + nr_keys++; + } + /* add sending time */ db_keys[nr_keys] = &sc_snd_time; db_vals[nr_keys].type = DB_INT;