minor changes to cdr logging
This commit is contained in:
parent
23df285f45
commit
371438118b
|
@ -1,3 +1,5 @@
|
||||||
|
2008-06-24 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
|
* Improved queue information: Included source interface
|
||||||
2008-06-18 P. A. Bagyenda <bagyenda@dsmagic.com>
|
2008-06-18 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
* added qcelp file extension to mime type mapping
|
* added qcelp file extension to mime type mapping
|
||||||
2008-05-30 P. A. Bagyenda <bagyenda@dsmagic.com>
|
2008-05-30 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
|
|
|
@ -276,6 +276,7 @@ static MmsEnvelope *pgq_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
qf,
|
qf,
|
||||||
|
NULL,
|
||||||
sizeof (struct pgfile_t), NULL);
|
sizeof (struct pgfile_t), NULL);
|
||||||
|
|
||||||
/* set the private data. */
|
/* set the private data. */
|
||||||
|
@ -322,6 +323,9 @@ static MmsEnvelope *pgq_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
||||||
case 'I':
|
case 'I':
|
||||||
e->msgId = octstr_create(res);
|
e->msgId = octstr_create(res);
|
||||||
break;
|
break;
|
||||||
|
case 'i': /* interface. */
|
||||||
|
strncpy(e->src_interface, res, sizeof e->src_interface);
|
||||||
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
case 'Z':
|
case 'Z':
|
||||||
t = octstr_create(res);
|
t = octstr_create(res);
|
||||||
|
@ -531,6 +535,10 @@ static int writeenvelope(MmsEnvelope *e, int newenv)
|
||||||
_puthdr(qfs->conn, qfs->qid, "P", octstr_get_cstr(e->fromproxy));
|
_puthdr(qfs->conn, qfs->qid, "P", octstr_get_cstr(e->fromproxy));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (e->src_interface[0])
|
||||||
|
_puthdr(qfs->conn, qfs->qid, "i", e->src_interface);
|
||||||
|
|
||||||
if (e->mdata)
|
if (e->mdata)
|
||||||
_puthdr(qfs->conn, qfs->qid, "M", octstr_get_cstr(e->mdata));
|
_puthdr(qfs->conn, qfs->qid, "M", octstr_get_cstr(e->mdata));
|
||||||
|
|
||||||
|
@ -577,7 +585,9 @@ static Octstr *pgq_queue_add(Octstr *from, List *to,
|
||||||
Octstr *url1, Octstr *url2,
|
Octstr *url1, Octstr *url2,
|
||||||
List *hdrs,
|
List *hdrs,
|
||||||
int dlr,
|
int dlr,
|
||||||
char *directory, Octstr *mmscname)
|
char *directory,
|
||||||
|
char *src_interface,
|
||||||
|
Octstr *mmscname)
|
||||||
{
|
{
|
||||||
char qf[QFNAMEMAX], xqid[128];
|
char qf[QFNAMEMAX], xqid[128];
|
||||||
int64_t qid;
|
int64_t qid;
|
||||||
|
@ -619,6 +629,7 @@ static Octstr *pgq_queue_add(Octstr *from, List *to,
|
||||||
senddate,expirydate,token,vaspid,vasid,
|
senddate,expirydate,token,vaspid,vasid,
|
||||||
url1,url2,hdrs,dlr,mmscname,m,
|
url1,url2,hdrs,dlr,mmscname,m,
|
||||||
qf,
|
qf,
|
||||||
|
src_interface,
|
||||||
sizeof(struct pgfile_t), &ms);
|
sizeof(struct pgfile_t), &ms);
|
||||||
|
|
||||||
qfs = e->qfs_data;
|
qfs = e->qfs_data;
|
||||||
|
|
|
@ -112,6 +112,7 @@ static int free_envelope(MmsEnvelope *e, int removefromqueue);
|
||||||
* a parameter. Letters mean:
|
* a parameter. Letters mean:
|
||||||
* T - message type (full text string -- MMS message type.
|
* T - message type (full text string -- MMS message type.
|
||||||
* I - message ID
|
* I - message ID
|
||||||
|
* i - source interface (MM1, MM4, etc.)
|
||||||
* F - From address
|
* F - From address
|
||||||
* R - Recipient (the ones pending) for this message
|
* R - Recipient (the ones pending) for this message
|
||||||
* C - Time queue entry was created
|
* C - Time queue entry was created
|
||||||
|
@ -222,6 +223,7 @@ static MmsEnvelope *mms_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
qf,
|
qf,
|
||||||
|
NULL,
|
||||||
sizeof (struct qfile_t), NULL);
|
sizeof (struct qfile_t), NULL);
|
||||||
qfs = e->qfs_data;
|
qfs = e->qfs_data;
|
||||||
|
|
||||||
|
@ -259,6 +261,9 @@ static MmsEnvelope *mms_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
||||||
case 'I':
|
case 'I':
|
||||||
e->msgId = octstr_create(res);
|
e->msgId = octstr_create(res);
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
strncpy(e->src_interface, res, sizeof e->src_interface);
|
||||||
|
break;
|
||||||
case 'F':
|
case 'F':
|
||||||
e->from = octstr_create(res);
|
e->from = octstr_create(res);
|
||||||
if (mms_validate_address(e->from) != 0) {
|
if (mms_validate_address(e->from) != 0) {
|
||||||
|
@ -428,6 +433,9 @@ static int writeenvelope(MmsEnvelope *e, int newenv)
|
||||||
if (e->msgId)
|
if (e->msgId)
|
||||||
_putline(fd, "I", octstr_get_cstr(e->msgId));
|
_putline(fd, "I", octstr_get_cstr(e->msgId));
|
||||||
|
|
||||||
|
if (e->src_interface[0])
|
||||||
|
_putline(fd, "i", e->src_interface);
|
||||||
|
|
||||||
if (e->from)
|
if (e->from)
|
||||||
_putline(fd, "F", octstr_get_cstr(e->from));
|
_putline(fd, "F", octstr_get_cstr(e->from));
|
||||||
|
|
||||||
|
@ -717,7 +725,9 @@ static Octstr *mms_queue_add(Octstr *from, List *to,
|
||||||
Octstr *url1, Octstr *url2,
|
Octstr *url1, Octstr *url2,
|
||||||
List *hdrs,
|
List *hdrs,
|
||||||
int dlr,
|
int dlr,
|
||||||
char *directory, Octstr *mmscname)
|
char *directory,
|
||||||
|
char *src_interface,
|
||||||
|
Octstr *mmscname)
|
||||||
{
|
{
|
||||||
char qf[QFNAMEMAX], subdir[64];
|
char qf[QFNAMEMAX], subdir[64];
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -736,7 +746,7 @@ static Octstr *mms_queue_add(Octstr *from, List *to,
|
||||||
e = mms_queue_create_envelope(from, to, subject, fromproxy,viaproxy,
|
e = mms_queue_create_envelope(from, to, subject, fromproxy,viaproxy,
|
||||||
senddate,expirydate,token,vaspid,vasid,
|
senddate,expirydate,token,vaspid,vasid,
|
||||||
url1,url2,hdrs,dlr,mmscname,m,
|
url1,url2,hdrs,dlr,mmscname,m,
|
||||||
octstr_get_cstr(res),
|
octstr_get_cstr(res), src_interface,
|
||||||
sizeof(struct qfile_t), &ms);
|
sizeof(struct qfile_t), &ms);
|
||||||
qfs = e->qfs_data;
|
qfs = e->qfs_data;
|
||||||
strncpy(qfs->name, qf, sizeof qfs->name);
|
strncpy(qfs->name, qf, sizeof qfs->name);
|
||||||
|
@ -831,6 +841,7 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
||||||
Octstr *mmscname,
|
Octstr *mmscname,
|
||||||
MmsMsg *m,
|
MmsMsg *m,
|
||||||
char *xqfname,
|
char *xqfname,
|
||||||
|
char *src_interface,
|
||||||
int extra_space,
|
int extra_space,
|
||||||
Octstr **binary_mms)
|
Octstr **binary_mms)
|
||||||
{
|
{
|
||||||
|
@ -879,6 +890,8 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
||||||
|
|
||||||
e->dlr = dlr;
|
e->dlr = dlr;
|
||||||
|
|
||||||
|
strncpy(e->src_interface, src_interface ? src_interface : "", sizeof e->src_interface);
|
||||||
|
|
||||||
if (xqfname)
|
if (xqfname)
|
||||||
strncpy(e->xqfname, xqfname, sizeof e->xqfname);
|
strncpy(e->xqfname, xqfname, sizeof e->xqfname);
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,9 @@ typedef struct MmsEnvelope {
|
||||||
Octstr *mdata; /* Generic string data used by any interface. */
|
Octstr *mdata; /* Generic string data used by any interface. */
|
||||||
Octstr *fromproxy; /* Which proxy sent us this message.*/
|
Octstr *fromproxy; /* Which proxy sent us this message.*/
|
||||||
Octstr *viaproxy; /* Which proxy must we send this message through. */
|
Octstr *viaproxy; /* Which proxy must we send this message through. */
|
||||||
|
|
||||||
|
char src_interface[16]; /* source interface of this message. */
|
||||||
|
char _extra_space; /* A bit of sugar, just in case... */
|
||||||
|
|
||||||
void *_x; /* Generic storage field used by module clients. */
|
void *_x; /* Generic storage field used by module clients. */
|
||||||
void *qfs_data; /* Queue handler module structure -- allocated for you by queue_create
|
void *qfs_data; /* Queue handler module structure -- allocated for you by queue_create
|
||||||
|
@ -90,15 +93,16 @@ typedef struct MmsQueueHandlerFuncs {
|
||||||
* Returns a queue file name.
|
* Returns a queue file name.
|
||||||
*/
|
*/
|
||||||
Octstr *(*mms_queue_add)(Octstr *from, List *to,
|
Octstr *(*mms_queue_add)(Octstr *from, List *to,
|
||||||
Octstr *subject,
|
Octstr *subject,
|
||||||
Octstr *fromproxy, Octstr *viaproxy,
|
Octstr *fromproxy, Octstr *viaproxy,
|
||||||
time_t senddate, time_t expirydate, MmsMsg *m,
|
time_t senddate, time_t expirydate, MmsMsg *m,
|
||||||
Octstr *token,
|
Octstr *token,
|
||||||
Octstr *vaspid, Octstr *vasid,
|
Octstr *vaspid, Octstr *vasid,
|
||||||
Octstr *url1, Octstr *url2,
|
Octstr *url1, Octstr *url2,
|
||||||
List *hdrs,
|
List *hdrs,
|
||||||
int dlr,
|
int dlr,
|
||||||
char *directory, Octstr *mmscname);
|
char *directory, char *src_interface,
|
||||||
|
Octstr *mmscname);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update queue status. Returns -1 on error, 0 if queue is updated fine and
|
* Update queue status. Returns -1 on error, 0 if queue is updated fine and
|
||||||
|
@ -166,6 +170,7 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
||||||
Octstr *mmscname,
|
Octstr *mmscname,
|
||||||
MmsMsg *m,
|
MmsMsg *m,
|
||||||
char *xqfname,
|
char *xqfname,
|
||||||
|
char *src_interface,
|
||||||
int extra_space,
|
int extra_space,
|
||||||
Octstr **binary_mms);
|
Octstr **binary_mms);
|
||||||
/* Get rid of memory used by this. */
|
/* Get rid of memory used by this. */
|
||||||
|
|
|
@ -227,6 +227,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
||||||
qh,
|
qh,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/SOAP-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
msgid = mms_maketransid(octstr_get_cstr(qf), octstr_imm(MM_NAME));
|
msgid = mms_maketransid(octstr_get_cstr(qf), octstr_imm(MM_NAME));
|
||||||
mms_log("Received", from, to, -1, msgid, NULL, h->m->id, "MMSBox", h->ua, NULL);
|
mms_log("Received", from, to, -1, msgid, NULL, h->m->id, "MMSBox", h->ua, NULL);
|
||||||
|
@ -256,6 +257,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/SOAP-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
else
|
else
|
||||||
qf = NULL;
|
qf = NULL;
|
||||||
|
@ -297,6 +299,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/SOAP-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
else
|
else
|
||||||
qf = NULL;
|
qf = NULL;
|
||||||
|
@ -464,6 +467,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
||||||
NULL,
|
NULL,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/EAIF-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
|
|
||||||
if (qf) {
|
if (qf) {
|
||||||
|
@ -484,6 +488,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/EAIF-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
if (qf) {
|
if (qf) {
|
||||||
/* Log to access log */
|
/* Log to access log */
|
||||||
|
@ -513,6 +518,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MM7/EAIF-IN",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
if (qf) {
|
if (qf) {
|
||||||
/* Log to access log */
|
/* Log to access log */
|
||||||
|
|
|
@ -1137,6 +1137,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
||||||
hdrs,
|
hdrs,
|
||||||
(dlr_url != NULL),
|
(dlr_url != NULL),
|
||||||
octstr_get_cstr(qdir),
|
octstr_get_cstr(qdir),
|
||||||
|
"MMSBox",
|
||||||
octstr_imm(MM_NAME));
|
octstr_imm(MM_NAME));
|
||||||
info(0, "MMSBox: Queued message from service [%s], [transid [%s]: %s",
|
info(0, "MMSBox: Queued message from service [%s], [transid [%s]: %s",
|
||||||
octstr_get_cstr(svc_name),
|
octstr_get_cstr(svc_name),
|
||||||
|
|
|
@ -46,8 +46,9 @@ static int mms_logcdr(MmsCdrStruct *cdr)
|
||||||
|
|
||||||
localtime_r(&cdr->sdate, &tm);
|
localtime_r(&cdr->sdate, &tm);
|
||||||
gw_strftime(buf, sizeof buf, "%Y-%m-%d %H:%M:%S", &tm);
|
gw_strftime(buf, sizeof buf, "%Y-%m-%d %H:%M:%S", &tm);
|
||||||
fprintf(cdr->module_data, "%s\t%.128s\t%.256s\t%.256s\t%ld\n",
|
fprintf(cdr->module_data, "%s\t%.128s\t%.128s\t%.256s\t%.256s\t%ld\n",
|
||||||
buf, cdr->from, cdr->to, cdr->msgid, cdr->msg_size);
|
buf, cdr->src_interface[0] ? cdr->src_interface : "MM2",
|
||||||
|
cdr->from, cdr->to, cdr->msgid, cdr->msg_size);
|
||||||
fflush(cdr->module_data);
|
fflush(cdr->module_data);
|
||||||
} else
|
} else
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -55,6 +56,25 @@ static int mms_logcdr(MmsCdrStruct *cdr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MmsCdrStruct *make_cdr_struct(void *module_data, time_t sdate, char *from, char *to, char *msgid,
|
||||||
|
char *vaspid, char *src_int, unsigned long msg_size)
|
||||||
|
{
|
||||||
|
|
||||||
|
MmsCdrStruct *cdr = gw_malloc(sizeof *cdr);
|
||||||
|
|
||||||
|
cdr->module_data = module_data;
|
||||||
|
cdr->sdate = sdate;
|
||||||
|
strncpy(cdr->from, from ? from : "", sizeof cdr->from);
|
||||||
|
strncpy(cdr->to, to ? to : "", sizeof cdr->to);
|
||||||
|
strncpy(cdr->msgid, msgid ? msgid : "", sizeof cdr->msgid);
|
||||||
|
strncpy(cdr->vaspid, vaspid ? vaspid : "", sizeof cdr->vaspid);
|
||||||
|
strncpy(cdr->src_interface, src_int ? src_int : "MM2", sizeof cdr->src_interface);
|
||||||
|
|
||||||
|
cdr->msg_size = msg_size;
|
||||||
|
|
||||||
|
return cdr;
|
||||||
|
}
|
||||||
|
|
||||||
/* The function itself. */
|
/* The function itself. */
|
||||||
MmsBillingFuncStruct mms_billfuncs = {
|
MmsBillingFuncStruct mms_billfuncs = {
|
||||||
mms_billingmodule_init,
|
mms_billingmodule_init,
|
||||||
|
|
|
@ -31,6 +31,7 @@ typedef struct MmsCdrStruct {
|
||||||
char to[CBUFSIZE];
|
char to[CBUFSIZE];
|
||||||
char msgid[CBUFSIZE];
|
char msgid[CBUFSIZE];
|
||||||
char vaspid[CBUFSIZE];
|
char vaspid[CBUFSIZE];
|
||||||
|
char src_interface[CBUFSIZE];
|
||||||
unsigned long msg_size;
|
unsigned long msg_size;
|
||||||
} MmsCdrStruct;
|
} MmsCdrStruct;
|
||||||
|
|
||||||
|
@ -54,4 +55,7 @@ typedef struct MmsBillingFuncStruct {
|
||||||
|
|
||||||
extern MmsBillingFuncStruct mms_billfuncs; /* The module must expose this symbol. */
|
extern MmsBillingFuncStruct mms_billfuncs; /* The module must expose this symbol. */
|
||||||
|
|
||||||
|
/* utility function. */
|
||||||
|
MmsCdrStruct *make_cdr_struct(void *module_data, time_t sdate, char *from, char *to, char *msgid,
|
||||||
|
char *vaspid, char *src_int, unsigned long msg_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -278,16 +278,17 @@ int main(int argc, char *argv[])
|
||||||
dlr = 0;
|
dlr = 0;
|
||||||
|
|
||||||
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL, xproxy, NULL,
|
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL, xproxy, NULL,
|
||||||
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
mm4_type ? "MM4" : "MM3",
|
||||||
|
settings->host_alias);
|
||||||
if (qf) {
|
if (qf) {
|
||||||
newmsgid = mms_maketransid(octstr_get_cstr(qf),
|
newmsgid = mms_maketransid(octstr_get_cstr(qf),
|
||||||
settings->host_alias);
|
settings->host_alias);
|
||||||
info(0, "%s Queued message to %s from %s (via %s) => %s",
|
info(0, "%s Queued message to %s from %s (via %s) => %s",
|
||||||
mm4_type ? "MM4 Incoming" : "Email2MMS",
|
mm4_type ? "MM4 Incoming" : "Email2MMS",
|
||||||
octstr_get_cstr(xto), octstr_get_cstr(xfrom),
|
octstr_get_cstr(xto), octstr_get_cstr(xfrom),
|
||||||
|
@ -319,14 +320,15 @@ int main(int argc, char *argv[])
|
||||||
octstr_format_append(xto, "/TYPE=PLMN");
|
octstr_format_append(xto, "/TYPE=PLMN");
|
||||||
gwlist_append(lto, xto);
|
gwlist_append(lto, xto);
|
||||||
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL,
|
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL,
|
||||||
xproxy, NULL,
|
xproxy, NULL,
|
||||||
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM4",
|
||||||
|
settings->host_alias);
|
||||||
gwlist_destroy(lto, NULL);
|
gwlist_destroy(lto, NULL);
|
||||||
if (qf) {
|
if (qf) {
|
||||||
info(0, "MM4 Queued DLR from proxy %s to %s from %s => %s",
|
info(0, "MM4 Queued DLR from proxy %s to %s from %s => %s",
|
||||||
|
@ -351,14 +353,15 @@ int main(int argc, char *argv[])
|
||||||
octstr_format_append(xto, "/TYPE=PLMN");
|
octstr_format_append(xto, "/TYPE=PLMN");
|
||||||
gwlist_append(lto, xto);
|
gwlist_append(lto, xto);
|
||||||
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL,
|
qf = settings->qfs->mms_queue_add(xfrom, lto, NULL,
|
||||||
xproxy, NULL,
|
xproxy, NULL,
|
||||||
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
0, time(NULL) + settings->default_msgexpiry, msg, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM4",
|
||||||
|
settings->host_alias);
|
||||||
gwlist_destroy(lto, NULL);
|
gwlist_destroy(lto, NULL);
|
||||||
if (qf) {
|
if (qf) {
|
||||||
info(0, "MM4 Queued read report from proxy %s to %s from %s => %s",
|
info(0, "MM4 Queued read report from proxy %s to %s from %s => %s",
|
||||||
|
@ -416,17 +419,15 @@ int main(int argc, char *argv[])
|
||||||
/* write CDR if it is a forward confirmation */
|
/* write CDR if it is a forward confirmation */
|
||||||
if (processed && mtype == MM4_FORWARD_RES &&
|
if (processed && mtype == MM4_FORWARD_RES &&
|
||||||
rstatus && octstr_str_case_compare(rstatus, "Ok") == 0) {
|
rstatus && octstr_str_case_compare(rstatus, "Ok") == 0) {
|
||||||
MmsCdrStruct _cdr, *cdr = &_cdr;
|
MmsCdrStruct *cdr = make_cdr_struct(settings->mms_bill_module_data,
|
||||||
|
e->created, octstr_get_cstr(e->from),
|
||||||
cdr->module_data = settings->mms_bill_module_data;
|
o_to ? octstr_get_cstr(o_to) : "",
|
||||||
cdr->sdate = e->created;
|
e->msgId ? octstr_get_cstr(e->msgId) : "",
|
||||||
strncpy(cdr->from, octstr_get_cstr(e->from), sizeof cdr->from);
|
e->vaspid ? octstr_get_cstr(e->vaspid) : "",
|
||||||
strncpy(cdr->to, o_to ? octstr_get_cstr(o_to) : "", sizeof cdr->to);
|
"MM4", e->msize);
|
||||||
strncpy(cdr->msgid, e->msgId ? octstr_get_cstr(e->msgId) : "", sizeof cdr->msgid);
|
|
||||||
strncpy(cdr->vaspid, e->vaspid ? octstr_get_cstr(e->vaspid) : "", sizeof cdr->vaspid);
|
|
||||||
cdr->msg_size = e->msize;
|
|
||||||
|
|
||||||
settings->mms_billfuncs->mms_logcdr(cdr);
|
settings->mms_billfuncs->mms_logcdr(cdr);
|
||||||
|
|
||||||
|
gw_free(cdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
info(0, "MM4 received %s from proxy %s to %s from %s => %s, status: [%s, %s]",
|
info(0, "MM4 received %s from proxy %s to %s from %s => %s, status: [%s, %s]",
|
||||||
|
|
|
@ -364,14 +364,15 @@ static int sendMsg(MmsEnvelope *e)
|
||||||
|
|
||||||
/* Add to queue, switch via proxy to be from proxy. */
|
/* Add to queue, switch via proxy to be from proxy. */
|
||||||
qfs = settings->qfs->mms_queue_add(to->rcpt, l,
|
qfs = settings->qfs->mms_queue_add(to->rcpt, l,
|
||||||
err, NULL, e->fromproxy,
|
err, NULL, e->fromproxy,
|
||||||
tnow, tnow+settings->default_msgexpiry, m, NULL,
|
tnow, tnow+settings->default_msgexpiry, m, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
qdir,
|
qdir,
|
||||||
settings->host_alias);
|
"MM2",
|
||||||
|
settings->host_alias);
|
||||||
octstr_destroy(qfs);
|
octstr_destroy(qfs);
|
||||||
gwlist_destroy(l, NULL);
|
gwlist_destroy(l, NULL);
|
||||||
|
|
||||||
|
@ -389,16 +390,15 @@ static int sendMsg(MmsEnvelope *e)
|
||||||
err ? octstr_get_cstr(err) : "(null)");
|
err ? octstr_get_cstr(err) : "(null)");
|
||||||
|
|
||||||
if (res == MMS_SEND_OK) { /* Do CDR writing. */
|
if (res == MMS_SEND_OK) { /* Do CDR writing. */
|
||||||
MmsCdrStruct *cdr = gw_malloc(sizeof *cdr);
|
MmsCdrStruct *cdr = make_cdr_struct(settings->mms_bill_module_data,
|
||||||
|
e->created,
|
||||||
cdr->module_data = settings->mms_bill_module_data;
|
octstr_get_cstr(e->from),
|
||||||
cdr->sdate = e->created;
|
octstr_get_cstr(to->rcpt),
|
||||||
strncpy(cdr->from, octstr_get_cstr(e->from), sizeof cdr->from);
|
e->msgId ? octstr_get_cstr(e->msgId) : "",
|
||||||
strncpy(cdr->to, octstr_get_cstr(to->rcpt), sizeof cdr->to);
|
e->vaspid ? octstr_get_cstr(e->vaspid) : "",
|
||||||
strncpy(cdr->msgid, e->msgId ? octstr_get_cstr(e->msgId) : "", sizeof cdr->msgid);
|
e->src_interface,
|
||||||
strncpy(cdr->vaspid, e->vaspid ? octstr_get_cstr(e->vaspid) : "", sizeof cdr->vaspid);
|
e->msize);
|
||||||
cdr->msg_size = e->msize;
|
|
||||||
|
|
||||||
gwlist_produce(cdr_list, cdr); /* Put it on list so sending thread sends it. */
|
gwlist_produce(cdr_list, cdr); /* Put it on list so sending thread sends it. */
|
||||||
}
|
}
|
||||||
octstr_destroy(err);
|
octstr_destroy(err);
|
||||||
|
@ -457,7 +457,9 @@ void mbuni_global_queue_runner(int *rstop)
|
||||||
/* When it ends, wait a little for other stuff to stop... */
|
/* When it ends, wait a little for other stuff to stop... */
|
||||||
sleep(2);
|
sleep(2);
|
||||||
gwlist_remove_producer(cdr_list); /* Stop CDR thread. */
|
gwlist_remove_producer(cdr_list); /* Stop CDR thread. */
|
||||||
|
|
||||||
|
gwlist_destroy(cdr_list, NULL); /* Destroy it. */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,11 +504,12 @@ int mms_sendtomobile(Octstr *from, Octstr *to,
|
||||||
x = octstr_create(tokenstr);
|
x = octstr_create(tokenstr);
|
||||||
if (m)
|
if (m)
|
||||||
ret = settings->qfs->mms_queue_add(from, l, subject, fromproxy, NULL, 0, expires, m,
|
ret = settings->qfs->mms_queue_add(from, l, subject, fromproxy, NULL, 0, expires, m,
|
||||||
x, NULL, NULL,
|
x, NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
dlr, mobile_qdir,
|
dlr, mobile_qdir,
|
||||||
settings->host_alias);
|
"MM2",
|
||||||
|
settings->host_alias);
|
||||||
else
|
else
|
||||||
*error = octstr_format("GlobalSend: Failed to send to %S, Message format is corrupt!", to);
|
*error = octstr_format("GlobalSend: Failed to send to %S, Message format is corrupt!", to);
|
||||||
|
|
||||||
|
|
|
@ -422,14 +422,15 @@ static int sendNotify(MmsEnvelope *e)
|
||||||
|
|
||||||
/* Add to queue, switch via proxy to be from proxy. */
|
/* Add to queue, switch via proxy to be from proxy. */
|
||||||
res = settings->qfs->mms_queue_add(to ? to : settings->system_user, l, err,
|
res = settings->qfs->mms_queue_add(to ? to : settings->system_user, l, err,
|
||||||
NULL, fromproxy,
|
NULL, fromproxy,
|
||||||
tnow, tnow+settings->default_msgexpiry, m, NULL,
|
tnow, tnow+settings->default_msgexpiry, m, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->mm1_queuedir),
|
octstr_get_cstr(settings->mm1_queuedir),
|
||||||
settings->host_alias);
|
"MM2",
|
||||||
|
settings->host_alias);
|
||||||
gwlist_destroy(l, NULL);
|
gwlist_destroy(l, NULL);
|
||||||
mms_destroy(m);
|
mms_destroy(m);
|
||||||
octstr_destroy(res);
|
octstr_destroy(res);
|
||||||
|
|
|
@ -399,13 +399,14 @@ void fetchmms_proxy(MmsHTTPClientInfo *h)
|
||||||
http_header_add(qh, "X-Mbuni-Timestamp", tbuf); /* record time of message. */
|
http_header_add(qh, "X-Mbuni-Timestamp", tbuf); /* record time of message. */
|
||||||
|
|
||||||
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
||||||
time(NULL) + settings->default_msgexpiry, mrpt, NULL,
|
time(NULL) + settings->default_msgexpiry, mrpt, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
qh,
|
qh,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
octstr_destroy(x);
|
octstr_destroy(x);
|
||||||
|
|
||||||
|
@ -591,8 +592,8 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
mmbox_loc = mms_makefetchurl(octstr_get_cstr(sdf), NULL, MMS_LOC_MMBOX, from, settings);
|
mmbox_loc = mms_makefetchurl(octstr_get_cstr(sdf), NULL, MMS_LOC_MMBOX, from, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x)
|
|
||||||
octstr_destroy(x);
|
octstr_destroy(x);
|
||||||
|
|
||||||
/*Delete some headers that must be sent on. */
|
/*Delete some headers that must be sent on. */
|
||||||
mms_remove_headers(m, "Bcc");
|
mms_remove_headers(m, "Bcc");
|
||||||
|
@ -611,13 +612,14 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
else
|
else
|
||||||
dlr = 0;
|
dlr = 0;
|
||||||
qf = settings->qfs->mms_queue_add(from, to, subject,
|
qf = settings->qfs->mms_queue_add(from, to, subject,
|
||||||
NULL, NULL, deliveryt, expiryt, m, NULL,
|
NULL, NULL, deliveryt, expiryt, m, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
qh,
|
qh,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
if (!qf)
|
if (!qf)
|
||||||
mresp = mms_sendconf("Error-transient-failure", "None", octstr_get_cstr(otransid),0,
|
mresp = mms_sendconf("Error-transient-failure", "None", octstr_get_cstr(otransid),0,
|
||||||
|
@ -792,13 +794,14 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
dlr = 0;
|
dlr = 0;
|
||||||
/* Message to forward is now ready, write it to queue. */
|
/* Message to forward is now ready, write it to queue. */
|
||||||
qf2 = settings->qfs->mms_queue_add(from, to, subject,
|
qf2 = settings->qfs->mms_queue_add(from, to, subject,
|
||||||
NULL, NULL, deliveryt, expiryt, mfwd, NULL,
|
NULL, NULL, deliveryt, expiryt, mfwd, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
qh,
|
qh,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
/* Process any requests for writing to mmbox. */
|
/* Process any requests for writing to mmbox. */
|
||||||
x = mms_get_header_value(m, octstr_imm("X-Mms-Store"));
|
x = mms_get_header_value(m, octstr_imm("X-Mms-Store"));
|
||||||
|
@ -881,40 +884,33 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
gwlist_append(l, pfrom);
|
gwlist_append(l, pfrom);
|
||||||
|
|
||||||
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
||||||
time(NULL) + settings->default_msgexpiry,
|
time(NULL) + settings->default_msgexpiry,
|
||||||
mrep, NULL,
|
mrep, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
if (x)
|
if (x)
|
||||||
octstr_destroy(x);
|
octstr_destroy(x);
|
||||||
|
|
||||||
gwlist_destroy(l, NULL);
|
gwlist_destroy(l, NULL);
|
||||||
mms_destroy(mrep);
|
mms_destroy(mrep);
|
||||||
}
|
}
|
||||||
if (pfrom)
|
|
||||||
octstr_destroy(pfrom);
|
|
||||||
if (pdelivery_report)
|
|
||||||
octstr_destroy(pdelivery_report);
|
|
||||||
if (pmsgid)
|
|
||||||
octstr_destroy(pmsgid);
|
|
||||||
|
|
||||||
if (msgid)
|
octstr_destroy(pfrom);
|
||||||
octstr_destroy(msgid);
|
octstr_destroy(pdelivery_report);
|
||||||
|
octstr_destroy(pmsgid);
|
||||||
if (xstate)
|
octstr_destroy(msgid);
|
||||||
octstr_destroy(xstate);
|
octstr_destroy(xstate);
|
||||||
if (xflags)
|
gwlist_destroy(xflags, (gwlist_item_destructor_t *)octstr_destroy);
|
||||||
gwlist_destroy(xflags, (gwlist_item_destructor_t *)octstr_destroy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
forward_done:
|
forward_done:
|
||||||
|
|
||||||
if (mfwd)
|
mms_destroy(mfwd);
|
||||||
mms_destroy(mfwd);
|
|
||||||
|
|
||||||
if (e) { /* Update the message queue and go. */
|
if (e) { /* Update the message queue and go. */
|
||||||
e->lastaccess = time(NULL);
|
e->lastaccess = time(NULL);
|
||||||
|
@ -992,13 +988,14 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
gwlist_append(l, octstr_duplicate(e->from));
|
gwlist_append(l, octstr_duplicate(e->from));
|
||||||
|
|
||||||
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
||||||
time(NULL) + settings->default_msgexpiry, mrpt, NULL,
|
time(NULL) + settings->default_msgexpiry, mrpt, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
qh,
|
qh,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
octstr_destroy(x);
|
octstr_destroy(x);
|
||||||
|
|
||||||
gwlist_destroy(l, (gwlist_item_destructor_t *)octstr_destroy);
|
gwlist_destroy(l, (gwlist_item_destructor_t *)octstr_destroy);
|
||||||
|
@ -1043,14 +1040,15 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
|
||||||
x = settings->qfs->mms_queue_add(from, to, NULL, NULL, NULL, time(NULL),
|
x = settings->qfs->mms_queue_add(from, to, NULL, NULL, NULL, time(NULL),
|
||||||
time(NULL) + settings->default_msgexpiry,
|
time(NULL) + settings->default_msgexpiry,
|
||||||
m, NULL,
|
m, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
qh,
|
qh,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM1",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
/* Log to access log */
|
/* Log to access log */
|
||||||
mms_log("ReadReport", h->client_addr, NULL, msize, NULL, NULL, NULL, "MM1", h->ua,NULL);
|
mms_log("ReadReport", h->client_addr, NULL, msize, NULL, NULL, NULL, "MM1", h->ua,NULL);
|
||||||
|
@ -1611,14 +1609,15 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
|
||||||
expiryt = time(NULL) + settings->default_msgexpiry;
|
expiryt = time(NULL) + settings->default_msgexpiry;
|
||||||
mms_remove_headers(m, "Message-ID"); /* cannot be found here. */
|
mms_remove_headers(m, "Message-ID"); /* cannot be found here. */
|
||||||
qf = settings->qfs->mms_queue_add(from ? from : sender, to, subject,
|
qf = settings->qfs->mms_queue_add(from ? from : sender, to, subject,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
delivert, expiryt, m, NULL,
|
delivert, expiryt, m, NULL,
|
||||||
h->vasp->id, vasid,
|
h->vasp->id, vasid,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM7",
|
||||||
|
settings->host_alias);
|
||||||
msgid = mms_maketransid(octstr_get_cstr(qf), settings->host_alias);
|
msgid = mms_maketransid(octstr_get_cstr(qf), settings->host_alias);
|
||||||
mms_log("Received", from ? from : sender, to, -1, msgid, h->vasp->id, NULL, "MM7",
|
mms_log("Received", from ? from : sender, to, -1, msgid, h->vasp->id, NULL, "MM7",
|
||||||
h->ua, NULL);
|
h->ua, NULL);
|
||||||
|
@ -1847,13 +1846,14 @@ static void mm7eaif_dispatch(MmsHTTPClientInfo *h)
|
||||||
|
|
||||||
/* Save it, make msgid, put message id in header, return. */
|
/* Save it, make msgid, put message id in header, return. */
|
||||||
qf = settings->qfs->mms_queue_add(hfrom, to, subject,
|
qf = settings->qfs->mms_queue_add(hfrom, to, subject,
|
||||||
NULL, NULL, deliveryt, expiryt, m, NULL,
|
NULL, NULL, deliveryt, expiryt, m, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
dlr,
|
dlr,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM7",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
if (qf) {
|
if (qf) {
|
||||||
msgid = mms_maketransid(octstr_get_cstr(qf),
|
msgid = mms_maketransid(octstr_get_cstr(qf),
|
||||||
|
|
|
@ -155,20 +155,21 @@ int main(int argc, char *argv[])
|
||||||
http_header_add(h, "X-Mms-CalledFrom", "Terminal");
|
http_header_add(h, "X-Mms-CalledFrom", "Terminal");
|
||||||
#endif
|
#endif
|
||||||
s = settings->qfs->mms_queue_add(from, to, NULL, NULL, NULL, time(NULL),
|
s = settings->qfs->mms_queue_add(from, to, NULL, NULL, NULL, time(NULL),
|
||||||
time(NULL) + settings->default_msgexpiry, m,
|
time(NULL) + settings->default_msgexpiry, m,
|
||||||
NULL,
|
NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
h,
|
h,
|
||||||
0,
|
0,
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
settings->host_alias);
|
"MM3",
|
||||||
|
settings->host_alias);
|
||||||
|
|
||||||
if (savetommbox)
|
if (savetommbox)
|
||||||
mmbox = mms_mmbox_addmsg(octstr_get_cstr(settings->mmbox_rootdir),
|
mmbox = mms_mmbox_addmsg(octstr_get_cstr(settings->mmbox_rootdir),
|
||||||
octstr_get_cstr(from), m, NULL, octstr_imm("Sent"));
|
octstr_get_cstr(from), m, NULL, octstr_imm("Sent"));
|
||||||
|
|
||||||
mms_log("Received", from, to, msize, s, NULL, NULL, "mmssend",NULL,NULL);
|
mms_log("Received", from, to, msize, s, NULL, NULL, "MM3",NULL,NULL);
|
||||||
|
|
||||||
printf("Queued: %s, mmbox=%s\n",
|
printf("Queued: %s, mmbox=%s\n",
|
||||||
octstr_get_cstr(s), mmbox ? octstr_get_cstr(mmbox) : "");
|
octstr_get_cstr(s), mmbox ? octstr_get_cstr(mmbox) : "");
|
||||||
|
|
Loading…
Reference in New Issue