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>
|
||||
* added qcelp file extension to mime type mapping
|
||||
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,
|
||||
qf,
|
||||
NULL,
|
||||
sizeof (struct pgfile_t), NULL);
|
||||
|
||||
/* set the private data. */
|
||||
|
@ -322,6 +323,9 @@ static MmsEnvelope *pgq_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
|||
case 'I':
|
||||
e->msgId = octstr_create(res);
|
||||
break;
|
||||
case 'i': /* interface. */
|
||||
strncpy(e->src_interface, res, sizeof e->src_interface);
|
||||
break;
|
||||
case 'R':
|
||||
case 'Z':
|
||||
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));
|
||||
|
||||
|
||||
|
||||
if (e->src_interface[0])
|
||||
_puthdr(qfs->conn, qfs->qid, "i", e->src_interface);
|
||||
|
||||
if (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,
|
||||
List *hdrs,
|
||||
int dlr,
|
||||
char *directory, Octstr *mmscname)
|
||||
char *directory,
|
||||
char *src_interface,
|
||||
Octstr *mmscname)
|
||||
{
|
||||
char qf[QFNAMEMAX], xqid[128];
|
||||
int64_t qid;
|
||||
|
@ -619,6 +629,7 @@ static Octstr *pgq_queue_add(Octstr *from, List *to,
|
|||
senddate,expirydate,token,vaspid,vasid,
|
||||
url1,url2,hdrs,dlr,mmscname,m,
|
||||
qf,
|
||||
src_interface,
|
||||
sizeof(struct pgfile_t), &ms);
|
||||
|
||||
qfs = e->qfs_data;
|
||||
|
|
|
@ -112,6 +112,7 @@ static int free_envelope(MmsEnvelope *e, int removefromqueue);
|
|||
* a parameter. Letters mean:
|
||||
* T - message type (full text string -- MMS message type.
|
||||
* I - message ID
|
||||
* i - source interface (MM1, MM4, etc.)
|
||||
* F - From address
|
||||
* R - Recipient (the ones pending) for this message
|
||||
* C - Time queue entry was created
|
||||
|
@ -222,6 +223,7 @@ static MmsEnvelope *mms_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
|||
NULL,
|
||||
NULL,
|
||||
qf,
|
||||
NULL,
|
||||
sizeof (struct qfile_t), NULL);
|
||||
qfs = e->qfs_data;
|
||||
|
||||
|
@ -259,6 +261,9 @@ static MmsEnvelope *mms_queue_readenvelope(char *qf, char *mms_queuedir, int sho
|
|||
case 'I':
|
||||
e->msgId = octstr_create(res);
|
||||
break;
|
||||
case 'i':
|
||||
strncpy(e->src_interface, res, sizeof e->src_interface);
|
||||
break;
|
||||
case 'F':
|
||||
e->from = octstr_create(res);
|
||||
if (mms_validate_address(e->from) != 0) {
|
||||
|
@ -428,6 +433,9 @@ static int writeenvelope(MmsEnvelope *e, int newenv)
|
|||
if (e->msgId)
|
||||
_putline(fd, "I", octstr_get_cstr(e->msgId));
|
||||
|
||||
if (e->src_interface[0])
|
||||
_putline(fd, "i", e->src_interface);
|
||||
|
||||
if (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,
|
||||
List *hdrs,
|
||||
int dlr,
|
||||
char *directory, Octstr *mmscname)
|
||||
char *directory,
|
||||
char *src_interface,
|
||||
Octstr *mmscname)
|
||||
{
|
||||
char qf[QFNAMEMAX], subdir[64];
|
||||
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,
|
||||
senddate,expirydate,token,vaspid,vasid,
|
||||
url1,url2,hdrs,dlr,mmscname,m,
|
||||
octstr_get_cstr(res),
|
||||
octstr_get_cstr(res), src_interface,
|
||||
sizeof(struct qfile_t), &ms);
|
||||
qfs = e->qfs_data;
|
||||
strncpy(qfs->name, qf, sizeof qfs->name);
|
||||
|
@ -831,6 +841,7 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
|||
Octstr *mmscname,
|
||||
MmsMsg *m,
|
||||
char *xqfname,
|
||||
char *src_interface,
|
||||
int extra_space,
|
||||
Octstr **binary_mms)
|
||||
{
|
||||
|
@ -879,6 +890,8 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
|||
|
||||
e->dlr = dlr;
|
||||
|
||||
strncpy(e->src_interface, src_interface ? src_interface : "", sizeof e->src_interface);
|
||||
|
||||
if (xqfname)
|
||||
strncpy(e->xqfname, xqfname, sizeof e->xqfname);
|
||||
|
||||
|
|
|
@ -65,6 +65,9 @@ typedef struct MmsEnvelope {
|
|||
Octstr *fromproxy; /* Which proxy sent us this message.*/
|
||||
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 *qfs_data; /* Queue handler module structure -- allocated for you by queue_create
|
||||
* function.
|
||||
|
@ -98,7 +101,8 @@ typedef struct MmsQueueHandlerFuncs {
|
|||
Octstr *url1, Octstr *url2,
|
||||
List *hdrs,
|
||||
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
|
||||
|
@ -166,6 +170,7 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
|
|||
Octstr *mmscname,
|
||||
MmsMsg *m,
|
||||
char *xqfname,
|
||||
char *src_interface,
|
||||
int extra_space,
|
||||
Octstr **binary_mms);
|
||||
/* Get rid of memory used by this. */
|
||||
|
|
|
@ -227,6 +227,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
dlr,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/SOAP-IN",
|
||||
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);
|
||||
|
@ -256,6 +257,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/SOAP-IN",
|
||||
octstr_imm(MM_NAME));
|
||||
else
|
||||
qf = NULL;
|
||||
|
@ -297,6 +299,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/SOAP-IN",
|
||||
octstr_imm(MM_NAME));
|
||||
else
|
||||
qf = NULL;
|
||||
|
@ -464,6 +467,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
dlr,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/EAIF-IN",
|
||||
octstr_imm(MM_NAME));
|
||||
|
||||
if (qf) {
|
||||
|
@ -484,6 +488,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/EAIF-IN",
|
||||
octstr_imm(MM_NAME));
|
||||
if (qf) {
|
||||
/* Log to access log */
|
||||
|
@ -513,6 +518,7 @@ static void mm7eaif_receive(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(qdir),
|
||||
"MM7/EAIF-IN",
|
||||
octstr_imm(MM_NAME));
|
||||
if (qf) {
|
||||
/* Log to access log */
|
||||
|
|
|
@ -1137,6 +1137,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
|||
hdrs,
|
||||
(dlr_url != NULL),
|
||||
octstr_get_cstr(qdir),
|
||||
"MMSBox",
|
||||
octstr_imm(MM_NAME));
|
||||
info(0, "MMSBox: Queued message from service [%s], [transid [%s]: %s",
|
||||
octstr_get_cstr(svc_name),
|
||||
|
|
|
@ -46,8 +46,9 @@ static int mms_logcdr(MmsCdrStruct *cdr)
|
|||
|
||||
localtime_r(&cdr->sdate, &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",
|
||||
buf, cdr->from, cdr->to, cdr->msgid, cdr->msg_size);
|
||||
fprintf(cdr->module_data, "%s\t%.128s\t%.128s\t%.256s\t%.256s\t%ld\n",
|
||||
buf, cdr->src_interface[0] ? cdr->src_interface : "MM2",
|
||||
cdr->from, cdr->to, cdr->msgid, cdr->msg_size);
|
||||
fflush(cdr->module_data);
|
||||
} else
|
||||
return -1;
|
||||
|
@ -55,6 +56,25 @@ static int mms_logcdr(MmsCdrStruct *cdr)
|
|||
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. */
|
||||
MmsBillingFuncStruct mms_billfuncs = {
|
||||
mms_billingmodule_init,
|
||||
|
|
|
@ -31,6 +31,7 @@ typedef struct MmsCdrStruct {
|
|||
char to[CBUFSIZE];
|
||||
char msgid[CBUFSIZE];
|
||||
char vaspid[CBUFSIZE];
|
||||
char src_interface[CBUFSIZE];
|
||||
unsigned long msg_size;
|
||||
} MmsCdrStruct;
|
||||
|
||||
|
@ -54,4 +55,7 @@ typedef struct MmsBillingFuncStruct {
|
|||
|
||||
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
|
||||
|
|
|
@ -284,6 +284,7 @@ int main(int argc, char *argv[])
|
|||
NULL,
|
||||
dlr,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
mm4_type ? "MM4" : "MM3",
|
||||
settings->host_alias);
|
||||
if (qf) {
|
||||
newmsgid = mms_maketransid(octstr_get_cstr(qf),
|
||||
|
@ -326,6 +327,7 @@ int main(int argc, char *argv[])
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM4",
|
||||
settings->host_alias);
|
||||
gwlist_destroy(lto, NULL);
|
||||
if (qf) {
|
||||
|
@ -358,6 +360,7 @@ int main(int argc, char *argv[])
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM4",
|
||||
settings->host_alias);
|
||||
gwlist_destroy(lto, NULL);
|
||||
if (qf) {
|
||||
|
@ -416,17 +419,15 @@ int main(int argc, char *argv[])
|
|||
/* write CDR if it is a forward confirmation */
|
||||
if (processed && mtype == MM4_FORWARD_RES &&
|
||||
rstatus && octstr_str_case_compare(rstatus, "Ok") == 0) {
|
||||
MmsCdrStruct _cdr, *cdr = &_cdr;
|
||||
|
||||
cdr->module_data = settings->mms_bill_module_data;
|
||||
cdr->sdate = e->created;
|
||||
strncpy(cdr->from, octstr_get_cstr(e->from), sizeof cdr->from);
|
||||
strncpy(cdr->to, o_to ? octstr_get_cstr(o_to) : "", sizeof cdr->to);
|
||||
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;
|
||||
|
||||
MmsCdrStruct *cdr = make_cdr_struct(settings->mms_bill_module_data,
|
||||
e->created, octstr_get_cstr(e->from),
|
||||
o_to ? octstr_get_cstr(o_to) : "",
|
||||
e->msgId ? octstr_get_cstr(e->msgId) : "",
|
||||
e->vaspid ? octstr_get_cstr(e->vaspid) : "",
|
||||
"MM4", e->msize);
|
||||
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]",
|
||||
|
|
|
@ -371,6 +371,7 @@ static int sendMsg(MmsEnvelope *e)
|
|||
NULL,
|
||||
0,
|
||||
qdir,
|
||||
"MM2",
|
||||
settings->host_alias);
|
||||
octstr_destroy(qfs);
|
||||
gwlist_destroy(l, NULL);
|
||||
|
@ -389,15 +390,14 @@ static int sendMsg(MmsEnvelope *e)
|
|||
err ? octstr_get_cstr(err) : "(null)");
|
||||
|
||||
if (res == MMS_SEND_OK) { /* Do CDR writing. */
|
||||
MmsCdrStruct *cdr = gw_malloc(sizeof *cdr);
|
||||
|
||||
cdr->module_data = settings->mms_bill_module_data;
|
||||
cdr->sdate = e->created;
|
||||
strncpy(cdr->from, octstr_get_cstr(e->from), sizeof cdr->from);
|
||||
strncpy(cdr->to, octstr_get_cstr(to->rcpt), sizeof cdr->to);
|
||||
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;
|
||||
MmsCdrStruct *cdr = make_cdr_struct(settings->mms_bill_module_data,
|
||||
e->created,
|
||||
octstr_get_cstr(e->from),
|
||||
octstr_get_cstr(to->rcpt),
|
||||
e->msgId ? octstr_get_cstr(e->msgId) : "",
|
||||
e->vaspid ? octstr_get_cstr(e->vaspid) : "",
|
||||
e->src_interface,
|
||||
e->msize);
|
||||
|
||||
gwlist_produce(cdr_list, cdr); /* Put it on list so sending thread sends it. */
|
||||
}
|
||||
|
@ -458,6 +458,8 @@ void mbuni_global_queue_runner(int *rstop)
|
|||
sleep(2);
|
||||
gwlist_remove_producer(cdr_list); /* Stop CDR thread. */
|
||||
|
||||
gwlist_destroy(cdr_list, NULL); /* Destroy it. */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -506,6 +508,7 @@ int mms_sendtomobile(Octstr *from, Octstr *to,
|
|||
NULL, NULL,
|
||||
NULL,
|
||||
dlr, mobile_qdir,
|
||||
"MM2",
|
||||
settings->host_alias);
|
||||
else
|
||||
*error = octstr_format("GlobalSend: Failed to send to %S, Message format is corrupt!", to);
|
||||
|
|
|
@ -429,6 +429,7 @@ static int sendNotify(MmsEnvelope *e)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(settings->mm1_queuedir),
|
||||
"MM2",
|
||||
settings->host_alias);
|
||||
gwlist_destroy(l, NULL);
|
||||
mms_destroy(m);
|
||||
|
|
|
@ -405,6 +405,7 @@ void fetchmms_proxy(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
|
||||
octstr_destroy(x);
|
||||
|
@ -591,7 +592,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
mmbox_loc = mms_makefetchurl(octstr_get_cstr(sdf), NULL, MMS_LOC_MMBOX, from, settings);
|
||||
}
|
||||
|
||||
if (x)
|
||||
|
||||
octstr_destroy(x);
|
||||
|
||||
/*Delete some headers that must be sent on. */
|
||||
|
@ -617,6 +618,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
dlr,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
|
||||
if (!qf)
|
||||
|
@ -798,6 +800,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
dlr,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
|
||||
/* Process any requests for writing to mmbox. */
|
||||
|
@ -888,6 +891,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
if (x)
|
||||
octstr_destroy(x);
|
||||
|
@ -895,25 +899,17 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
gwlist_destroy(l, NULL);
|
||||
mms_destroy(mrep);
|
||||
}
|
||||
if (pfrom)
|
||||
|
||||
octstr_destroy(pfrom);
|
||||
if (pdelivery_report)
|
||||
octstr_destroy(pdelivery_report);
|
||||
if (pmsgid)
|
||||
octstr_destroy(pmsgid);
|
||||
|
||||
if (msgid)
|
||||
octstr_destroy(msgid);
|
||||
|
||||
if (xstate)
|
||||
octstr_destroy(xstate);
|
||||
if (xflags)
|
||||
gwlist_destroy(xflags, (gwlist_item_destructor_t *)octstr_destroy);
|
||||
}
|
||||
|
||||
forward_done:
|
||||
|
||||
if (mfwd)
|
||||
mms_destroy(mfwd);
|
||||
|
||||
if (e) { /* Update the message queue and go. */
|
||||
|
@ -998,6 +994,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
octstr_destroy(x);
|
||||
|
||||
|
@ -1050,6 +1047,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
|||
qh,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM1",
|
||||
settings->host_alias);
|
||||
|
||||
/* Log to access log */
|
||||
|
@ -1618,6 +1616,7 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
dlr,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM7",
|
||||
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",
|
||||
|
@ -1853,6 +1852,7 @@ static void mm7eaif_dispatch(MmsHTTPClientInfo *h)
|
|||
NULL,
|
||||
dlr,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM7",
|
||||
settings->host_alias);
|
||||
|
||||
if (qf) {
|
||||
|
|
|
@ -162,13 +162,14 @@ int main(int argc, char *argv[])
|
|||
h,
|
||||
0,
|
||||
octstr_get_cstr(settings->global_queuedir),
|
||||
"MM3",
|
||||
settings->host_alias);
|
||||
|
||||
if (savetommbox)
|
||||
mmbox = mms_mmbox_addmsg(octstr_get_cstr(settings->mmbox_rootdir),
|
||||
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",
|
||||
octstr_get_cstr(s), mmbox ? octstr_get_cstr(mmbox) : "");
|
||||
|
|
Loading…
Reference in New Issue