[PATCH] foreign_id support for sqlbox

Stipe Tolj <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Organization Kannel Software Foundation (KSF)
Message-ID <[email protected]>
Hi list,

this is a simple patchset allowing to handle 'foreign_id' as we handle 
it in the msg struct in the DB schemas.

Please review and vote for commit.

Stipe

-- 
-------------------------------------------------------------------
Kölner Landstrasse 419
40589 DÃŒsseldorf, NRW, Germany

tolj.org system architecture      Kannel Software Foundation (KSF)
http://www.tolj.org/              http://www.kannel.org/

mailto:st_{at}_tolj.org           mailto:stolj_{at}_kannel.org
-------------------------------------------------------------------
sqlbox-foreign-id.diff (text/plain, 41 KB)
Index: gw/sqlbox_mysql.c
===================================================================
--- gw/sqlbox_mysql.c	(revision 48)
+++ gw/sqlbox_mysql.c	(working copy)
@@ -123,29 +123,31 @@
             msg->sms.msgdata    = octstr_null_create(row[5]);
             msg->sms.time       = atol_null(row[6]);
             msg->sms.smsc_id    = octstr_null_create(row[7]);
-            msg->sms.service    = octstr_null_create(row[8]);
-            msg->sms.account    = octstr_null_create(row[9]);
-            /* msg->sms.id      = atol_null(row[10]); */
-            msg->sms.sms_type   = atol_null(row[11]);
-            msg->sms.mclass     = atol_null(row[12]);
-            msg->sms.mwi        = atol_null(row[13]);
-            msg->sms.coding     = atol_null(row[14]);
-            msg->sms.compress   = atol_null(row[15]);
-            msg->sms.validity   = atol_null(row[16]);
-            msg->sms.deferred   = atol_null(row[17]);
-            msg->sms.dlr_mask   = atol_null(row[18]);
-            msg->sms.dlr_url    = octstr_null_create(row[19]);
-            msg->sms.pid        = atol_null(row[20]);
-            msg->sms.alt_dcs    = atol_null(row[21]);
-            msg->sms.rpi        = atol_null(row[22]);
-            msg->sms.charset    = octstr_null_create(row[23]);
-            msg->sms.binfo      = octstr_null_create(row[25]);
-            msg->sms.meta_data  = octstr_null_create(row[26]);
-            if (row[24] == NULL) {
-                msg->sms.boxc_id= octstr_duplicate(sqlbox_id);
+            msg->sms.foreign_id = octstr_null_create(row[8]);
+            msg->sms.service    = octstr_null_create(row[9]);
+            msg->sms.account    = octstr_null_create(row[10]);
+            /* msg->sms.id      = atol_null(row[11]); */
+            msg->sms.sms_type   = atol_null(row[12]);
+            msg->sms.mclass     = atol_null(row[13]);
+            msg->sms.mwi        = atol_null(row[14]);
+            msg->sms.coding     = atol_null(row[15]);
+            msg->sms.compress   = atol_null(row[16]);
+            msg->sms.validity   = atol_null(row[17]);
+            msg->sms.deferred   = atol_null(row[18]);
+            msg->sms.dlr_mask   = atol_null(row[19]);
+            msg->sms.dlr_url    = octstr_null_create(row[20]);
+            msg->sms.pid        = atol_null(row[21]);
+            msg->sms.alt_dcs    = atol_null(row[22]);
+            msg->sms.rpi        = atol_null(row[23]);
+            msg->sms.charset    = octstr_null_create(row[24]);
+            /* msg->sms.boxc_ud = octstr_null_create(row[25]); */
+            msg->sms.binfo      = octstr_null_create(row[26]);
+            msg->sms.meta_data  = octstr_null_create(row[27]);
+            if (row[25] == NULL) {
+                msg->sms.boxc_id = octstr_duplicate(sqlbox_id);
             }
             else {
-                msg->sms.boxc_id= octstr_null_create(row[24]);
+                msg->sms.boxc_id = octstr_null_create(row[25]);
             }
             /* delete current row */
             delet = octstr_format(SQLBOX_MYSQL_DELETE_QUERY, sqlbox_insert_table, id);
@@ -192,13 +194,33 @@
     Octstr *stuffer[30];
     int stuffcount = 0;
 
-    sql = octstr_format(SQLBOX_MYSQL_INSERT_QUERY, sqlbox_logtable, st_str(momt), st_str(msg->sms.sender),
-        st_str(msg->sms.receiver), st_str(msg->sms.udhdata), st_str(msg->sms.msgdata), st_num(msg->sms.time),
-        st_str(msg->sms.smsc_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
-        st_num(msg->sms.mclass), st_num(msg->sms.mwi), st_num(msg->sms.coding), st_num(msg->sms.compress),
-        st_num(msg->sms.validity), st_num(msg->sms.deferred), st_num(msg->sms.dlr_mask), st_str(msg->sms.dlr_url),
-        st_num(msg->sms.pid), st_num(msg->sms.alt_dcs), st_num(msg->sms.rpi), st_str(msg->sms.charset),
-        st_str(msg->sms.boxc_id), st_str(msg->sms.binfo), st_str(msg->sms.meta_data));
+    sql = octstr_format(SQLBOX_MYSQL_INSERT_QUERY, sqlbox_logtable,
+    		st_str(momt),
+    		st_str(msg->sms.sender),
+    		st_str(msg->sms.receiver),
+    		st_str(msg->sms.udhdata),
+    		st_str(msg->sms.msgdata),
+    		st_num(msg->sms.time),
+    		st_str(msg->sms.smsc_id),
+    		st_str(msg->sms.foreign_id),
+    		st_str(msg->sms.service),
+    		st_str(msg->sms.account),
+    		st_num(msg->sms.sms_type),
+    		st_num(msg->sms.mclass),
+    		st_num(msg->sms.mwi),
+    		st_num(msg->sms.coding),
+    		st_num(msg->sms.compress),
+    		st_num(msg->sms.validity),
+    		st_num(msg->sms.deferred),
+    		st_num(msg->sms.dlr_mask),
+    		st_str(msg->sms.dlr_url),
+    		st_num(msg->sms.pid),
+    		st_num(msg->sms.alt_dcs),
+    		st_num(msg->sms.rpi),
+    		st_str(msg->sms.charset),
+    		st_str(msg->sms.boxc_id),
+    		st_str(msg->sms.binfo),
+    		st_str(msg->sms.meta_data));
     sql_update(sql);
     while (stuffcount > 0) {
         octstr_destroy(stuffer[--stuffcount]);
Index: gw/sqlbox_mysql.h
===================================================================
--- gw/sqlbox_mysql.h	(revision 48)
+++ gw/sqlbox_mysql.h	(working copy)
@@ -6,7 +6,8 @@
 sql_id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, \
 momt ENUM('MO', 'MT', 'DLR') NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, \
-time BIGINT(20) NULL, smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, \
+time BIGINT(20) NULL, smsc_id VARCHAR(255) NULL, \
+foreign_id VARCHAR(255) NULL, service VARCHAR(255) NULL, \
 account VARCHAR(255) NULL, id BIGINT(20) NULL, sms_type BIGINT(20) NULL, \
 mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, coding BIGINT(20) NULL, \
 compress BIGINT(20) NULL, validity BIGINT(20) NULL, deferred BIGINT(20) NULL, \
@@ -18,7 +19,8 @@
 sql_id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, \
 momt ENUM('MO', 'MT') NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, \
-time BIGINT(20) NULL, smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, \
+time BIGINT(20) NULL, smsc_id VARCHAR(255) NULL,  \
+foreign_id VARCHAR(255) NULL, service VARCHAR(255) NULL, \
 account VARCHAR(255) NULL, id BIGINT(20) NULL, sms_type BIGINT(20) NULL, \
 mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, coding BIGINT(20) NULL, \
 compress BIGINT(20) NULL, validity BIGINT(20) NULL, deferred BIGINT(20) NULL, \
@@ -27,16 +29,16 @@
 boxc_id VARCHAR(255) NULL, binfo VARCHAR(255) NULL, meta_data TEXT)"
 
 #define SQLBOX_MYSQL_SELECT_QUERY "SELECT sql_id, momt, sender, receiver, udhdata, \
-msgdata, time, smsc_id, service, account, id, sms_type, mclass, mwi, coding, \
+msgdata, time, smsc_id, foreign_id, service, account, id, sms_type, mclass, mwi, coding, \
 compress, validity, deferred, dlr_mask, dlr_url, pid, alt_dcs, rpi, \
 charset, boxc_id, binfo, meta_data FROM %S LIMIT 0,1"
 
 #define SQLBOX_MYSQL_INSERT_QUERY "INSERT INTO %S ( sql_id, momt, sender, \
-receiver, udhdata, msgdata, time, smsc_id, service, account, sms_type, \
+receiver, udhdata, msgdata, time, smsc_id, foreign_id, service, account, sms_type, \
 mclass, mwi, coding, compress, validity, deferred, dlr_mask, dlr_url, \
 pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data ) VALUES ( \
-NULL, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, \
-%S, %S, %S, %S, %S, %S, %S, %S, %S)"
+NULL, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, \
+%S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
 
 #define SQLBOX_MYSQL_DELETE_QUERY "DELETE FROM %S WHERE sql_id = %S"
 
Index: gw/sqlbox_oracle.c
===================================================================
--- gw/sqlbox_oracle.c	(revision 49)
+++ gw/sqlbox_oracle.c	(working copy)
@@ -127,29 +127,30 @@
             msg->sms.msgdata    = get_oracle_octstr_col(5);
             msg->sms.time       = get_oracle_long_col(6);
             msg->sms.smsc_id    = get_oracle_octstr_col(7);
-            msg->sms.service    = get_oracle_octstr_col(8);
-            msg->sms.account    = get_oracle_octstr_col(9);
-            /* msg->sms.id      = get_oracle_long_col(10); */
-            msg->sms.sms_type   = get_oracle_long_col(11);
-            msg->sms.mclass     = get_oracle_long_col(12);
-            msg->sms.mwi        = get_oracle_long_col(13);
-            msg->sms.coding     = get_oracle_long_col(14);
-            msg->sms.compress   = get_oracle_long_col(15);
-            msg->sms.validity   = get_oracle_long_col(16);
-            msg->sms.deferred   = get_oracle_long_col(17);
-            msg->sms.dlr_mask   = get_oracle_long_col(18);
-            msg->sms.dlr_url    = get_oracle_octstr_col(19);
-            msg->sms.pid        = get_oracle_long_col(20);
-            msg->sms.alt_dcs    = get_oracle_long_col(21);
-            msg->sms.rpi        = get_oracle_long_col(22);
-            msg->sms.charset    = get_oracle_octstr_col(23);
-            msg->sms.binfo      = get_oracle_octstr_col(25);
+            msg->sms.foreign_id = get_oracle_octstr_col(8);
+            msg->sms.service    = get_oracle_octstr_col(9);
+            msg->sms.account    = get_oracle_octstr_col(10);
+            /* msg->sms.id      = get_oracle_long_col(11); */
+            msg->sms.sms_type   = get_oracle_long_col(12);
+            msg->sms.mclass     = get_oracle_long_col(13);
+            msg->sms.mwi        = get_oracle_long_col(14);
+            msg->sms.coding     = get_oracle_long_col(15);
+            msg->sms.compress   = get_oracle_long_col(16);
+            msg->sms.validity   = get_oracle_long_col(17);
+            msg->sms.deferred   = get_oracle_long_col(18);
+            msg->sms.dlr_mask   = get_oracle_long_col(19);
+            msg->sms.dlr_url    = get_oracle_octstr_col(20);
+            msg->sms.pid        = get_oracle_long_col(21);
+            msg->sms.alt_dcs    = get_oracle_long_col(22);
+            msg->sms.rpi        = get_oracle_long_col(23);
+            msg->sms.charset    = get_oracle_octstr_col(24);
             msg->sms.binfo      = get_oracle_octstr_col(26);
-            if (gwlist_get(row,24) == NULL) {
-                msg->sms.boxc_id= octstr_duplicate(sqlbox_id);
+            msg->sms.binfo      = get_oracle_octstr_col(27);
+            if (gwlist_get(row, 25) == NULL) {
+                msg->sms.boxc_id = octstr_duplicate(sqlbox_id);
             }
             else {
-                msg->sms.boxc_id= get_oracle_octstr_col(24);
+                msg->sms.boxc_id = get_oracle_octstr_col(25);
             }
             /* delete current row */
             delet = octstr_format(SQLBOX_ORACLE_DELETE_QUERY, sqlbox_insert_table);
@@ -206,24 +207,25 @@
     gwlist_append(binds, st_str(msg->sms.msgdata));	/*  :5 */
     gwlist_append(binds, st_num(msg->sms.time));	/*  :6 */
     gwlist_append(binds, st_str(msg->sms.smsc_id));	/*  :7 */
-    gwlist_append(binds, st_str(msg->sms.service));	/*  :8 */
-    gwlist_append(binds, st_str(msg->sms.account));	/*  :9 */
-    gwlist_append(binds, st_num(msg->sms.sms_type));	/* :10 */
-    gwlist_append(binds, st_num(msg->sms.mclass));	/* :11 */
-    gwlist_append(binds, st_num(msg->sms.mwi));		/* :12 */
-    gwlist_append(binds, st_num(msg->sms.coding));	/* :13 */
-    gwlist_append(binds, st_num(msg->sms.compress));	/* :14 */
-    gwlist_append(binds, st_num(msg->sms.validity));	/* :15 */
-    gwlist_append(binds, st_num(msg->sms.deferred));	/* :16 */
-    gwlist_append(binds, st_num(msg->sms.dlr_mask));	/* :17 */
-    gwlist_append(binds, st_str(msg->sms.dlr_url));	/* :18 */
-    gwlist_append(binds, st_num(msg->sms.pid));		/* :19 */
-    gwlist_append(binds, st_num(msg->sms.alt_dcs));	/* :20 */
-    gwlist_append(binds, st_num(msg->sms.rpi));		/* :21 */
-    gwlist_append(binds, st_str(msg->sms.charset));	/* :22 */
-    gwlist_append(binds, st_str(msg->sms.boxc_id));	/* :23 */
-    gwlist_append(binds, st_str(msg->sms.binfo));	/* :24 */
-    gwlist_append(binds, st_str(msg->sms.meta_data));	/* :25 */
+    gwlist_append(binds, st_str(msg->sms.foreign_id));	/*  :8 */
+    gwlist_append(binds, st_str(msg->sms.service));	/*  :9 */
+    gwlist_append(binds, st_str(msg->sms.account));	/*  :10 */
+    gwlist_append(binds, st_num(msg->sms.sms_type));	/* :11 */
+    gwlist_append(binds, st_num(msg->sms.mclass));	/* :12 */
+    gwlist_append(binds, st_num(msg->sms.mwi));		/* :13 */
+    gwlist_append(binds, st_num(msg->sms.coding));	/* :14 */
+    gwlist_append(binds, st_num(msg->sms.compress));	/* :15 */
+    gwlist_append(binds, st_num(msg->sms.validity));	/* :16 */
+    gwlist_append(binds, st_num(msg->sms.deferred));	/* :17 */
+    gwlist_append(binds, st_num(msg->sms.dlr_mask));	/* :18 */
+    gwlist_append(binds, st_str(msg->sms.dlr_url));	/* :19 */
+    gwlist_append(binds, st_num(msg->sms.pid));		/* :20 */
+    gwlist_append(binds, st_num(msg->sms.alt_dcs));	/* :21 */
+    gwlist_append(binds, st_num(msg->sms.rpi));		/* :22 */
+    gwlist_append(binds, st_str(msg->sms.charset));	/* :23 */
+    gwlist_append(binds, st_str(msg->sms.boxc_id));	/* :24 */
+    gwlist_append(binds, st_str(msg->sms.binfo));	/* :25 */
+    gwlist_append(binds, st_str(msg->sms.meta_data));	/* :26 */
 #if defined(SQLBOX_TRACE)
      debug("SQLBOX", 0, "sql: %s", octstr_get_cstr(sql));
 #endif
Index: gw/sqlbox_oracle.h
===================================================================
--- gw/sqlbox_oracle.h	(revision 49)
+++ gw/sqlbox_oracle.h	(working copy)
@@ -5,7 +5,8 @@
 #define SQLBOX_ORACLE_CREATE_LOG_TABLE "CREATE TABLE \"%S\" (\"sql_id\" INTEGER NOT NULL PRIMARY KEY, \
 \"momt\" VARCHAR2(3) NULL, \"sender\" VARCHAR2(20) NULL, \"receiver\" VARCHAR2(20) NULL, \
 \"udhdata\" VARCHAR2(4000) NULL, \"msgdata\" VARCHAR2(4000) NULL, \"time\" INTEGER NULL, \
-\"smsc_id\" VARCHAR2(255) NULL, \"service\" VARCHAR2(255) NULL, \"account\" VARCHAR2(255) NULL, \
+\"smsc_id\" VARCHAR2(255) NULL, \"foreign_id\" VARCHAR2(255) NULL, \
+\"service\" VARCHAR2(255) NULL, \"account\" VARCHAR2(255) NULL, \
 \"id\" INTEGER NULL, \"sms_type\" INTEGER NULL, \"mclass\" INTEGER NULL, \"mwi\" INTEGER NULL, \
 \"coding\" INTEGER NULL, \"compress\" INTEGER NULL, \"validity\" INTEGER NULL, \"deferred\" INTEGER NULL, \
 \"dlr_mask\" INTEGER NULL, \"dlr_url\" VARCHAR2(255) NULL, \"pid\" INTEGER NULL, \"alt_dcs\" INTEGER NULL, \
@@ -16,7 +17,8 @@
 #define SQLBOX_ORACLE_CREATE_INSERT_TABLE "CREATE TABLE \"%S\" (\"sql_id\" INTEGER NOT NULL PRIMARY KEY, \
 \"momt\" VARCHAR2(3) NULL, \"sender\" VARCHAR2(20) NULL, \"receiver\" VARCHAR2(20) NULL, \
 \"udhdata\" VARCHAR2(4000) NULL, \"msgdata\" VARCHAR2(4000) NULL, \"time\" INTEGER NULL, \
-\"smsc_id\" VARCHAR2(255) NULL, \"service\" VARCHAR2(255) NULL, \"account\" VARCHAR2(255) NULL, \
+\"smsc_id\" VARCHAR2(255) NULL, \"foreign_id\" VARCHAR2(255) NULL, \
+\"service\" VARCHAR2(255) NULL, \"account\" VARCHAR2(255) NULL, \
 \"id\" INTEGER NULL, \"sms_type\" INTEGER NULL, \"mclass\" INTEGER NULL, \"mwi\" INTEGER NULL, \
 \"coding\" INTEGER NULL, \"compress\" INTEGER NULL, \"validity\" INTEGER NULL, \"deferred\" INTEGER NULL, \
 \"dlr_mask\" INTEGER NULL, \"dlr_url\" VARCHAR2(255) NULL, \"pid\" INTEGER NULL, \"alt_dcs\" INTEGER NULL, \
@@ -35,14 +37,14 @@
 FOR EACH ROW BEGIN SELECT \"%S_seq\".nextval INTO :new.\"sql_id\" FROM DUAL; END;"
 
 #define SQLBOX_ORACLE_SELECT_QUERY "SELECT \"sql_id\", \"momt\", \"sender\", \"receiver\", \"udhdata\", \"msgdata\", \
-\"time\", \"smsc_id\", \"service\", \"account\", \"id\", \"sms_type\", \"mclass\", \"mwi\", \"coding\", \"compress\", \
+\"time\", \"smsc_id\", \"foreign_id\", \"service\", \"account\", \"id\", \"sms_type\", \"mclass\", \"mwi\", \"coding\", \"compress\", \
 \"validity\", \"deferred\", \"dlr_mask\", \"dlr_url\", \"pid\", \"alt_dcs\", \"rpi\", \"charset\", \"boxc_id\", \
 \"binfo\", \"meta_data\" FROM \"%S\" WHERE ROWNUM = 1"
 
 #define SQLBOX_ORACLE_INSERT_QUERY "INSERT INTO \"%S\" (\"momt\", \"sender\", \"receiver\", \"udhdata\", \"msgdata\", \
-\"time\", \"smsc_id\", \"service\", \"account\", \"sms_type\", \"mclass\", \"mwi\", \"coding\", \"compress\", \"validity\", \
+\"time\", \"smsc_id\", \"foreign_id\", \"service\", \"account\", \"sms_type\", \"mclass\", \"mwi\", \"coding\", \"compress\", \"validity\", \
 \"deferred\", \"dlr_mask\", \"dlr_url\", \"pid\", \"alt_dcs\", \"rpi\", \"charset\", \"boxc_id\", \"binfo\", \"meta_data\" \
-) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25)"
+) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26)"
 
 #define SQLBOX_ORACLE_DELETE_QUERY "DELETE FROM \"%S\" WHERE \"sql_id\" = :1"
 
Index: gw/sqlbox_pgsql.c
===================================================================
--- gw/sqlbox_pgsql.c	(revision 48)
+++ gw/sqlbox_pgsql.c	(working copy)
@@ -146,7 +146,7 @@
 
     sql = octstr_format(SQLBOX_PGSQL_INSERT_QUERY, sqlbox_logtable, st_str(momt), st_str(msg->sms.sender),
         st_str(msg->sms.receiver), st_str(msg->sms.udhdata), st_str(msg->sms.msgdata), st_num(msg->sms.time),
-        st_str(msg->sms.smsc_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
+        st_str(msg->sms.smsc_id), st_str(msg->sms.foreign_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
         st_num(msg->sms.mclass), st_num(msg->sms.mwi), st_num(msg->sms.coding), st_num(msg->sms.compress),
         st_num(msg->sms.validity), st_num(msg->sms.deferred), st_num(msg->sms.dlr_mask), st_str(msg->sms.dlr_url),
         st_num(msg->sms.pid), st_num(msg->sms.alt_dcs), st_num(msg->sms.rpi), st_str(msg->sms.charset),
@@ -191,29 +191,30 @@
             msg->sms.msgdata    = octstr_null_create(5);
             msg->sms.time       = atol_null(6);
             msg->sms.smsc_id    = octstr_null_create(7);
-            msg->sms.service    = octstr_null_create(8);
-            msg->sms.account    = octstr_null_create(9);
-            /* msg->sms.id      = atol_null(row[10]); */
-            msg->sms.sms_type   = atol_null(11);
-            msg->sms.mclass     = atol_null(12);
-            msg->sms.mwi        = atol_null(13);
-            msg->sms.coding     = atol_null(14);
-            msg->sms.compress   = atol_null(15);
-            msg->sms.validity   = atol_null(16);
-            msg->sms.deferred   = atol_null(17);
-            msg->sms.dlr_mask   = atol_null(18);
-            msg->sms.dlr_url    = octstr_null_create(19);
-            msg->sms.pid        = atol_null(20);
-            msg->sms.alt_dcs    = atol_null(21);
-            msg->sms.rpi        = atol_null(22);
-            msg->sms.charset    = octstr_null_create(23);
-            msg->sms.binfo      = octstr_null_create(25);
-            msg->sms.meta_data  = octstr_null_create(26);
-            if ((PQgetvalue(res, 0, 24)) == NULL) {
-                msg->sms.boxc_id= octstr_duplicate(sqlbox_id);
+            msg->sms.foreign_id = octstr_null_create(8);
+            msg->sms.service    = octstr_null_create(9);
+            msg->sms.account    = octstr_null_create(10);
+            /* msg->sms.id      = atol_null(row[11]); */
+            msg->sms.sms_type   = atol_null(12);
+            msg->sms.mclass     = atol_null(13);
+            msg->sms.mwi        = atol_null(14);
+            msg->sms.coding     = atol_null(15);
+            msg->sms.compress   = atol_null(16);
+            msg->sms.validity   = atol_null(17);
+            msg->sms.deferred   = atol_null(18);
+            msg->sms.dlr_mask   = atol_null(19);
+            msg->sms.dlr_url    = octstr_null_create(20);
+            msg->sms.pid        = atol_null(21);
+            msg->sms.alt_dcs    = atol_null(22);
+            msg->sms.rpi        = atol_null(23);
+            msg->sms.charset    = octstr_null_create(24);
+            msg->sms.binfo      = octstr_null_create(26);
+            msg->sms.meta_data  = octstr_null_create(27);
+            if ((PQgetvalue(res, 0, 25)) == NULL) {
+                msg->sms.boxc_id = octstr_duplicate(sqlbox_id);
             }
             else {
-                msg->sms.boxc_id= octstr_null_create(24);
+                msg->sms.boxc_id = octstr_null_create(25);
             }
             /* delete current row */
             delet = octstr_format(SQLBOX_PGSQL_DELETE_QUERY, sqlbox_insert_table, id);
Index: gw/sqlbox_pgsql.h
===================================================================
--- gw/sqlbox_pgsql.h	(revision 48)
+++ gw/sqlbox_pgsql.h	(working copy)
@@ -5,7 +5,7 @@
 #define SQLBOX_PGSQL_CREATE_LOG_TABLE "CREATE TABLE %S (sql_id SERIAL PRIMARY KEY, \
 momt VARCHAR(3) CHECK(momt IN ('MO', 'MT', 'DLR', NULL)) DEFAULT NULL, \
 sender VARCHAR(20) NULL, receiver VARCHAR(20) NULL, udhdata VARCHAR(255) NULL, \
-msgdata TEXT NULL, time BIGINT NULL, smsc_id VARCHAR(255) NULL, \
+msgdata TEXT NULL, time BIGINT NULL, smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL, \
 service VARCHAR(255) NULL, account VARCHAR(255) NULL, id BIGINT NULL, \
 sms_type BIGINT NULL, mclass BIGINT NULL, mwi BIGINT NULL, coding BIGINT NULL, \
 compress BIGINT NULL, validity BIGINT NULL, deferred BIGINT NULL, \
@@ -16,7 +16,7 @@
 #define SQLBOX_PGSQL_CREATE_INSERT_TABLE "CREATE TABLE %S (sql_id SERIAL PRIMARY KEY, \
 momt VARCHAR(3) CHECK(momt IN ('MO', 'MT', NULL)) DEFAULT NULL, \
 sender VARCHAR(20) NULL, receiver VARCHAR(20) NULL, udhdata VARCHAR(255) NULL, \
-msgdata TEXT NULL, time BIGINT NULL, smsc_id VARCHAR(255) NULL, \
+msgdata TEXT NULL, time BIGINT NULL, smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL \
 service VARCHAR(255) NULL, account VARCHAR(255) NULL, id BIGINT NULL, \
 sms_type BIGINT NULL, mclass BIGINT NULL, mwi BIGINT NULL, coding BIGINT NULL, \
 compress BIGINT NULL, validity BIGINT NULL, deferred BIGINT NULL, \
@@ -25,13 +25,13 @@
 boxc_id VARCHAR(255) NULL, binfo VARCHAR(255) NULL, meta_data TEXT NULL)"
 
 #define SQLBOX_PGSQL_SELECT_QUERY "SELECT sql_id, momt, sender, receiver, udhdata, msgdata, \
-time, smsc_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, deferred, \
+time, smsc_id, foreign_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, deferred, \
 dlr_mask, dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data FROM %S LIMIT 1 OFFSET 0"
 
 #define SQLBOX_PGSQL_INSERT_QUERY "INSERT INTO %S (momt, sender, receiver, udhdata, msgdata, \
-time, smsc_id, service, account, sms_type, mclass, mwi, coding, compress, validity, deferred, \
+time, smsc_id, foreign_id, service, account, sms_type, mclass, mwi, coding, compress, validity, deferred, \
 dlr_mask, dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data) VALUES (%S, %S, %S, \
-%S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
+%S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
 
 #define SQLBOX_PGSQL_DELETE_QUERY "DELETE FROM %S WHERE sql_id = %S"
 
Index: gw/sqlbox_sdb.c
===================================================================
--- gw/sqlbox_sdb.c	(revision 48)
+++ gw/sqlbox_sdb.c	(working copy)
@@ -156,29 +156,30 @@
             msg->sms.msgdata    = get_sdb_octstr_col(5);
             msg->sms.time       = get_sdb_long_col(6);
             msg->sms.smsc_id    = get_sdb_octstr_col(7);
-            msg->sms.service    = get_sdb_octstr_col(8);
-            msg->sms.account    = get_sdb_octstr_col(9);
-            /* msg->sms.id      = get_sdb_long_col(10); */
-            msg->sms.sms_type   = get_sdb_long_col(11);
-            msg->sms.mclass     = get_sdb_long_col(12);
-            msg->sms.mwi        = get_sdb_long_col(13);
-            msg->sms.coding     = get_sdb_long_col(14);
-            msg->sms.compress   = get_sdb_long_col(15);
-            msg->sms.validity   = get_sdb_long_col(16);
-            msg->sms.deferred   = get_sdb_long_col(17);
-            msg->sms.dlr_mask   = get_sdb_long_col(18);
-            msg->sms.dlr_url    = get_sdb_octstr_col(19);
-            msg->sms.pid        = get_sdb_long_col(20);
-            msg->sms.alt_dcs    = get_sdb_long_col(21);
-            msg->sms.rpi        = get_sdb_long_col(22);
-            msg->sms.charset    = get_sdb_octstr_col(23);
-            msg->sms.binfo      = get_sdb_octstr_col(25);
-            msg->sms.meta_data  = get_sdb_octstr_col(26);
-            if (gwlist_get(row,24) == NULL) {
-                msg->sms.boxc_id= octstr_duplicate(sqlbox_id);
+            msg->sms.foreign_id = get_sdb_octstr_col(8);
+            msg->sms.service    = get_sdb_octstr_col(9);
+            msg->sms.account    = get_sdb_octstr_col(10);
+            /* msg->sms.id      = get_sdb_long_col(11); */
+            msg->sms.sms_type   = get_sdb_long_col(12);
+            msg->sms.mclass     = get_sdb_long_col(13);
+            msg->sms.mwi        = get_sdb_long_col(14);
+            msg->sms.coding     = get_sdb_long_col(15);
+            msg->sms.compress   = get_sdb_long_col(16);
+            msg->sms.validity   = get_sdb_long_col(17);
+            msg->sms.deferred   = get_sdb_long_col(18);
+            msg->sms.dlr_mask   = get_sdb_long_col(19);
+            msg->sms.dlr_url    = get_sdb_octstr_col(20);
+            msg->sms.pid        = get_sdb_long_col(21);
+            msg->sms.alt_dcs    = get_sdb_long_col(22);
+            msg->sms.rpi        = get_sdb_long_col(23);
+            msg->sms.charset    = get_sdb_octstr_col(24);
+            msg->sms.binfo      = get_sdb_octstr_col(26);
+            msg->sms.meta_data  = get_sdb_octstr_col(27);
+            if (gwlist_get(row, 25) == NULL) {
+                msg->sms.boxc_id = octstr_duplicate(sqlbox_id);
             }
             else {
-                msg->sms.boxc_id= get_sdb_octstr_col(24);
+                msg->sms.boxc_id = get_sdb_octstr_col(25);
             }
             /* delete current row */
             delet = octstr_format(queries->delete_query, sqlbox_insert_table, id);
@@ -236,7 +237,7 @@
 
     sql = octstr_format(queries->insert_query, sqlbox_logtable, st_str(momt), st_str(msg->sms.sender),
         st_str(msg->sms.receiver), st_str(msg->sms.udhdata), st_str(msg->sms.msgdata), st_num(msg->sms.time),
-        st_str(msg->sms.smsc_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
+        st_str(msg->sms.smsc_id), st_str(msg->sms.foreign_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
         st_num(msg->sms.mclass), st_num(msg->sms.mwi), st_num(msg->sms.coding), st_num(msg->sms.compress),
         st_num(msg->sms.validity), st_num(msg->sms.deferred), st_num(msg->sms.dlr_mask), st_str(msg->sms.dlr_url),
         st_num(msg->sms.pid), st_num(msg->sms.alt_dcs), st_num(msg->sms.rpi), st_str(msg->sms.charset),
Index: gw/sqlbox_sdb.h
===================================================================
--- gw/sqlbox_sdb.h	(revision 48)
+++ gw/sqlbox_sdb.h	(working copy)
@@ -3,16 +3,16 @@
 #ifdef HAVE_SDB
 
 #define SQLBOX_OTHER_SELECT_QUERY "SELECT sql_id, momt, sender, receiver, udhdata, \
-msgdata, time, smsc_id, service, account, id, sms_type, mclass, mwi, coding, \
+msgdata, time, smsc_id, foreign_id, service, account, id, sms_type, mclass, mwi, coding, \
 compress, validity, deferred, dlr_mask, dlr_url, pid, alt_dcs, rpi, \
 charset, boxc_id, binfo, meta_data FROM %S"
 
 #define SQLBOX_OTHER_INSERT_QUERY "INSERT INTO %S (sql_id, momt, sender, \
-receiver, udhdata, msgdata, time, smsc_id, service, account, sms_type, \
+receiver, udhdata, msgdata, time, smsc_id, foreign_id, service, account, sms_type, \
 mclass, mwi, coding, compress, validity, deferred, dlr_mask, dlr_url, \
 pid, alt_dcs, rpi, charset, boxc_id, binfo ) VALUES ( \
 NULL, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, \
-%S, %S, %S, %S, %S, %S, %S, %S, %S)"
+%S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
 
 #define SQLBOX_OTHER_DELETE_QUERY "DELETE FROM %S WHERE sql_id = %S"
 
Index: gw/sqlbox_sqlite.c
===================================================================
--- gw/sqlbox_sqlite.c	(revision 48)
+++ gw/sqlbox_sqlite.c	(working copy)
@@ -137,28 +137,29 @@
             msg->sms.msgdata    = octstr_null_create(row[5]);
             msg->sms.time       = atol_null(row[6]);
             msg->sms.smsc_id    = octstr_null_create(row[7]);
-            msg->sms.service    = octstr_null_create(row[8]);
-            msg->sms.account    = octstr_null_create(row[9]);
-            /* msg->sms.id      = atol_null(row[10]); */
-            msg->sms.sms_type   = atol_null(row[11]);
-            msg->sms.mclass     = atol_null(row[12]);
-            msg->sms.mwi        = atol_null(row[13]);
-            msg->sms.coding     = atol_null(row[14]);
-            msg->sms.compress   = atol_null(row[15]);
-            msg->sms.validity   = atol_null(row[16]);
-            msg->sms.deferred   = atol_null(row[17]);
-            msg->sms.dlr_mask   = atol_null(row[18]);
-            msg->sms.dlr_url    = octstr_null_create(row[19]);
-            msg->sms.pid        = atol_null(row[20]);
-            msg->sms.alt_dcs    = atol_null(row[21]);
-            msg->sms.rpi        = atol_null(row[22]);
-            msg->sms.charset    = octstr_null_create(row[23]);
-            msg->sms.binfo      = octstr_null_create(row[25]);
-            msg->sms.meta_data  = octstr_null_create(row[26]);
-            if (row[24] == NULL) {
-                msg->sms.boxc_id= octstr_duplicate(sqlbox_id);
+            msg->sms.foreign_id = octstr_null_create(row[8]);
+            msg->sms.service    = octstr_null_create(row[9]);
+            msg->sms.account    = octstr_null_create(row[10]);
+            /* msg->sms.id      = atol_null(row[11]); */
+            msg->sms.sms_type   = atol_null(row[12]);
+            msg->sms.mclass     = atol_null(row[13]);
+            msg->sms.mwi        = atol_null(row[14]);
+            msg->sms.coding     = atol_null(row[15]);
+            msg->sms.compress   = atol_null(row[16]);
+            msg->sms.validity   = atol_null(row[17]);
+            msg->sms.deferred   = atol_null(row[18]);
+            msg->sms.dlr_mask   = atol_null(row[19]);
+            msg->sms.dlr_url    = octstr_null_create(row[20]);
+            msg->sms.pid        = atol_null(row[21]);
+            msg->sms.alt_dcs    = atol_null(row[22]);
+            msg->sms.rpi        = atol_null(row[23]);
+            msg->sms.charset    = octstr_null_create(row[24]);
+            msg->sms.binfo      = octstr_null_create(row[26]);
+            msg->sms.meta_data  = octstr_null_create(row[27]);
+            if (row[25] == NULL) {
+                msg->sms.boxc_id = octstr_duplicate(sqlbox_id);
             } else {
-                msg->sms.boxc_id= octstr_null_create(row[24]);
+                msg->sms.boxc_id = octstr_null_create(row[25]);
             }
         }
     } while (state==SQLITE_ROW);
@@ -218,7 +219,7 @@
 
     sql = octstr_format(SQLBOX_SQLITE_INSERT_QUERY, sqlbox_logtable, st_str(momt), st_str(msg->sms.sender),
         st_str(msg->sms.receiver), st_str(msg->sms.udhdata), st_str(msg->sms.msgdata), st_num(msg->sms.time),
-        st_str(msg->sms.smsc_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
+        st_str(msg->sms.smsc_id), st_str(msg->sms.foreign_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
         st_num(msg->sms.mclass), st_num(msg->sms.mwi), st_num(msg->sms.coding), st_num(msg->sms.compress),
         st_num(msg->sms.validity), st_num(msg->sms.deferred), st_num(msg->sms.dlr_mask), st_str(msg->sms.dlr_url),
         st_num(msg->sms.pid), st_num(msg->sms.alt_dcs), st_num(msg->sms.rpi), st_str(msg->sms.charset),
Index: gw/sqlbox_sqlite.h
===================================================================
--- gw/sqlbox_sqlite.h	(revision 48)
+++ gw/sqlbox_sqlite.h	(working copy)
@@ -5,7 +5,8 @@
 #define SQLBOX_SQLITE_CREATE_LOG_TABLE "CREATE TABLE %S ( \
 sql_id INTEGER AUTOINCREMENT PRIMARY KEY, momt CHAR(3) NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, time BIGINT(20) NULL, \
-smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
+smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL, \
+service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
 id BIGINT(20) NULL, sms_type BIGINT(20) NULL, mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, \
 coding BIGINT(20) NULL, compress BIGINT(20) NULL, validity BIGINT(20) NULL, \
 deferred BIGINT(20) NULL, dlr_mask BIGINT(20) NULL, dlr_url VARCHAR(255) NULL, \
@@ -15,7 +16,8 @@
 #define SQLBOX_SQLITE_CREATE_INSERT_TABLE "CREATE TABLE %S ( \
 sql_id INTEGER AUTOINCREMENT PRIMARY KEY, momt CHAR(3) NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, time BIGINT(20) NULL, \
-smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
+smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL, \
+service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
 id BIGINT(20) NULL, sms_type BIGINT(20) NULL, mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, \
 coding BIGINT(20) NULL, compress BIGINT(20) NULL, validity BIGINT(20) NULL, \
 deferred BIGINT(20) NULL, dlr_mask BIGINT(20) NULL, dlr_url VARCHAR(255) NULL, \
@@ -23,13 +25,13 @@
 boxc_id VARCHAR(255) NULL, binfo VARCHAR(255) NULL, meta_data TEXT NULL)"
 
 #define SQLBOX_SQLITE_SELECT_QUERY "SELECT sql_id, momt, sender, receiver, udhdata, msgdata, \
-time, smsc_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, \
+time, smsc_id, foreign_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, \
 deferred, dlr_mask, dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data FROM %S LIMIT 0,1"
 
 #define SQLBOX_SQLITE_INSERT_QUERY "INSERT INTO %S (sql_id, momt, sender, receiver, udhdata, msgdata, \
-time, smsc_id, service, account, sms_type, mclass, mwi, coding, compress, validity, deferred, dlr_mask, \
+time, smsc_id, foreign_id, service, account, sms_type, mclass, mwi, coding, compress, validity, deferred, dlr_mask, \
 dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data) VALUES (NULL, %S, %S, %S, %S, %S, %S, \
-%S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
+%S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
 
 #define SQLBOX_SQLITE_DELETE_QUERY "DELETE FROM %S WHERE sql_id = %S"
 
Index: gw/sqlbox_sqlite3.c
===================================================================
--- gw/sqlbox_sqlite3.c	(revision 48)
+++ gw/sqlbox_sqlite3.c	(working copy)
@@ -128,25 +128,26 @@
             msg->sms.msgdata    = octstr_null_create((char *)sqlite3_column_text(res, 5));
             msg->sms.time       = atol_null((char *)sqlite3_column_text(res,6));
             msg->sms.smsc_id    = octstr_null_create((char *)sqlite3_column_text(res, 7));
-            msg->sms.service    = octstr_null_create((char *)sqlite3_column_text(res, 8));
-            msg->sms.account    = octstr_null_create((char *)sqlite3_column_text(res, 9));
-            /* msg->sms.id      = atol_null((char *)sqlite3_column_text(res, 10)); */
-            msg->sms.sms_type   = atol_null((char *)sqlite3_column_text(res, 11));
-            msg->sms.mclass     = atol_null((char *)sqlite3_column_text(res, 12));
-            msg->sms.mwi        = atol_null((char *)sqlite3_column_text(res, 13));
-            msg->sms.coding     = atol_null((char *)sqlite3_column_text(res, 14));
-            msg->sms.compress   = atol_null((char *)sqlite3_column_text(res, 15));
-            msg->sms.validity   = atol_null((char *)sqlite3_column_text(res, 16));
-            msg->sms.deferred   = atol_null((char *)sqlite3_column_text(res, 17));
-            msg->sms.dlr_mask   = atol_null((char *)sqlite3_column_text(res, 18));
-            msg->sms.dlr_url    = octstr_null_create((char *)sqlite3_column_text(res, 19));
-            msg->sms.pid        = atol_null((char *)sqlite3_column_text(res, 20));
-            msg->sms.alt_dcs    = atol_null((char *)sqlite3_column_text(res, 21));
-            msg->sms.rpi        = atol_null((char *)sqlite3_column_text(res, 22));
-            msg->sms.charset    = octstr_null_create((char *)sqlite3_column_text(res, 23));
-            msg->sms.binfo      = octstr_null_create((char *)sqlite3_column_text(res, 25));
-            msg->sms.meta_data  = octstr_null_create((char *)sqlite3_column_text(res, 26));
-            msg->sms.boxc_id    = (sqlite3_column_text(res, 24) == NULL) ? octstr_duplicate(sqlbox_id):octstr_null_create((char *)sqlite3_column_text(res, 24));
+            msg->sms.foreign_id = octstr_null_create((char *)sqlite3_column_text(res, 8));
+            msg->sms.service    = octstr_null_create((char *)sqlite3_column_text(res, 9));
+            msg->sms.account    = octstr_null_create((char *)sqlite3_column_text(res, 10));
+            /* msg->sms.id      = atol_null((char *)sqlite3_column_text(res, 11)); */
+            msg->sms.sms_type   = atol_null((char *)sqlite3_column_text(res, 12));
+            msg->sms.mclass     = atol_null((char *)sqlite3_column_text(res, 13));
+            msg->sms.mwi        = atol_null((char *)sqlite3_column_text(res, 14));
+            msg->sms.coding     = atol_null((char *)sqlite3_column_text(res, 15));
+            msg->sms.compress   = atol_null((char *)sqlite3_column_text(res, 16));
+            msg->sms.validity   = atol_null((char *)sqlite3_column_text(res, 17));
+            msg->sms.deferred   = atol_null((char *)sqlite3_column_text(res, 18));
+            msg->sms.dlr_mask   = atol_null((char *)sqlite3_column_text(res, 19));
+            msg->sms.dlr_url    = octstr_null_create((char *)sqlite3_column_text(res, 20));
+            msg->sms.pid        = atol_null((char *)sqlite3_column_text(res, 21));
+            msg->sms.alt_dcs    = atol_null((char *)sqlite3_column_text(res, 22));
+            msg->sms.rpi        = atol_null((char *)sqlite3_column_text(res, 23));
+            msg->sms.charset    = octstr_null_create((char *)sqlite3_column_text(res, 24));
+            msg->sms.binfo      = octstr_null_create((char *)sqlite3_column_text(res, 26));
+            msg->sms.meta_data  = octstr_null_create((char *)sqlite3_column_text(res, 27));
+            msg->sms.boxc_id    = (sqlite3_column_text(res, 25) == NULL) ? octstr_duplicate(sqlbox_id):octstr_null_create((char *)sqlite3_column_text(res, 25));
         }
     } while (state==SQLITE_ROW);
     sqlite3_finalize(res);
@@ -206,7 +207,7 @@
 
     sql = octstr_format(SQLBOX_SQLITE3_INSERT_QUERY, sqlbox_logtable, st_str(momt), st_str(msg->sms.sender),
         st_str(msg->sms.receiver), st_str(msg->sms.udhdata), st_str(msg->sms.msgdata), st_num(msg->sms.time),
-        st_str(msg->sms.smsc_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
+        st_str(msg->sms.smsc_id), st_str(msg->sms.foreign_id), st_str(msg->sms.service), st_str(msg->sms.account), st_num(msg->sms.sms_type),
         st_num(msg->sms.mclass), st_num(msg->sms.mwi), st_num(msg->sms.coding), st_num(msg->sms.compress),
         st_num(msg->sms.validity), st_num(msg->sms.deferred), st_num(msg->sms.dlr_mask), st_str(msg->sms.dlr_url),
         st_num(msg->sms.pid), st_num(msg->sms.alt_dcs), st_num(msg->sms.rpi), st_str(msg->sms.charset),
Index: gw/sqlbox_sqlite3.h
===================================================================
--- gw/sqlbox_sqlite3.h	(revision 48)
+++ gw/sqlbox_sqlite3.h	(working copy)
@@ -5,7 +5,8 @@
 #define SQLBOX_SQLITE3_CREATE_LOG_TABLE "CREATE TABLE IF NOT EXISTS %S ( \
 sql_id INTEGER PRIMARY KEY AUTOINCREMENT, momt CHAR(3) NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, time BIGINT(20) NULL, \
-smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
+smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL, \
+service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
 id BIGINT(20) NULL, sms_type BIGINT(20) NULL, mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, \
 coding BIGINT(20) NULL, compress BIGINT(20) NULL, validity BIGINT(20) NULL, \
 deferred BIGINT(20) NULL, dlr_mask BIGINT(20) NULL, dlr_url VARCHAR(255) NULL, \
@@ -15,7 +16,8 @@
 #define SQLBOX_SQLITE3_CREATE_INSERT_TABLE "CREATE TABLE IF NOT EXISTS %S ( \
 sql_id INTEGER PRIMARY KEY AUTOINCREMENT, momt CHAR(3) NULL, sender VARCHAR(20) NULL, \
 receiver VARCHAR(20) NULL, udhdata BLOB NULL, msgdata TEXT NULL, time BIGINT(20) NULL, \
-smsc_id VARCHAR(255) NULL, service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
+smsc_id VARCHAR(255) NULL, foreign_id VARCHAR(255) NULL, \
+service VARCHAR(255) NULL, account VARCHAR(255) NULL, \
 id BIGINT(20) NULL, sms_type BIGINT(20) NULL, mclass BIGINT(20) NULL, mwi BIGINT(20) NULL, \
 coding BIGINT(20) NULL, compress BIGINT(20) NULL, validity BIGINT(20) NULL, \
 deferred BIGINT(20) NULL, dlr_mask BIGINT(20) NULL, dlr_url VARCHAR(255) NULL, \
@@ -23,11 +25,11 @@
 boxc_id VARCHAR(255) NULL, binfo VARCHAR(255) NULL, meta_data TEXT NULL)"
 
 #define SQLBOX_SQLITE3_SELECT_QUERY "SELECT sql_id, momt, sender, receiver, udhdata, msgdata, \
-time, smsc_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, deferred, \
+time, smsc_id, foreign_id, service, account, id, sms_type, mclass, mwi, coding, compress, validity, deferred, \
 dlr_mask, dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data FROM %S LIMIT 0,1"
 
 #define SQLBOX_SQLITE3_INSERT_QUERY "INSERT INTO %S (sql_id, momt, sender, receiver, udhdata, \
-msgdata, time, smsc_id, service, account, sms_type, mclass, mwi, coding, compress, validity, \
+msgdata, time, smsc_id, foreign_id, service, account, sms_type, mclass, mwi, coding, compress, validity, \
 deferred, dlr_mask, dlr_url, pid, alt_dcs, rpi, charset, boxc_id, binfo, meta_data) VALUES (NULL, \
 %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S, %S)"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.