提交 222fcbdd authored 作者: Michael Jerris's avatar Michael Jerris

Fri Mar 7 11:47:06 EST 2008 Pekka.Pessi@nokia.com

  * tport: allow using TPTAG_LOG() and TPTAG_DUMP() with tport_set_params().



git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7824 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 1073925b
...@@ -532,7 +532,6 @@ tport_t *tport_tcreate(tp_stack_t *stack, ...@@ -532,7 +532,6 @@ tport_t *tport_tcreate(tp_stack_t *stack,
ta_start(ta, tag, value); ta_start(ta, tag, value);
tport_set_params(mr->mr_master, ta_tags(ta)); tport_set_params(mr->mr_master, ta_tags(ta));
tport_open_log(mr, ta_args(ta));
#if HAVE_SOFIA_STUN #if HAVE_SOFIA_STUN
tport_init_stun_server(mr, ta_args(ta)); tport_init_stun_server(mr, ta_args(ta));
...@@ -1233,12 +1232,12 @@ int tport_set_params(tport_t *self, ...@@ -1233,12 +1232,12 @@ int tport_set_params(tport_t *self,
tag_type_t tag, tag_value_t value, ...) tag_type_t tag, tag_value_t value, ...)
{ {
ta_list ta; ta_list ta;
int n; int n, m = 0;
tport_params_t tpp[1], *tpp0; tport_params_t tpp[1], *tpp0;
usize_t mtu; usize_t mtu;
int connect, sdwn_error, reusable, stun_server, pong2ping; int connect, sdwn_error, reusable, stun_server, pong2ping;
if (self == NULL) if (self == NULL)
return su_seterrno(EINVAL); return su_seterrno(EINVAL);
...@@ -1272,10 +1271,13 @@ int tport_set_params(tport_t *self, ...@@ -1272,10 +1271,13 @@ int tport_set_params(tport_t *self,
TPTAG_TOS_REF(tpp->tpp_tos), TPTAG_TOS_REF(tpp->tpp_tos),
TAG_END()); TAG_END());
if (self == (tport_t *)self->tp_master)
m = tport_open_log(self->tp_master, ta_args(ta));
ta_end(ta); ta_end(ta);
if (n == 0) if (n == 0)
return 0; return m;
if (tpp->tpp_idle > 0 && tpp->tpp_idle < 100) if (tpp->tpp_idle > 0 && tpp->tpp_idle < 100)
tpp->tpp_idle = 100; tpp->tpp_idle = 100;
...@@ -1314,7 +1316,7 @@ int tport_set_params(tport_t *self, ...@@ -1314,7 +1316,7 @@ int tport_set_params(tport_t *self,
if (tport_is_secondary(self)) if (tport_is_secondary(self))
tport_set_secondary_timer(self); tport_set_secondary_timer(self);
return n; return n + m;
} }
extern tport_vtable_t const tport_udp_vtable; extern tport_vtable_t const tport_udp_vtable;
...@@ -4260,6 +4262,7 @@ tport_t *tport_next(tport_t const *self) ...@@ -4260,6 +4262,7 @@ tport_t *tport_next(tport_t const *self)
return NULL; return NULL;
else if (tport_is_master(self)) else if (tport_is_master(self))
return ((tport_master_t *)self)->mr_primaries->pri_primary; return ((tport_master_t *)self)->mr_primaries->pri_primary;
else if (tport_is_primary(self)) else if (tport_is_primary(self))
return ((tport_primary_t *)self)->pri_next->pri_primary; return ((tport_primary_t *)self)->pri_next->pri_primary;
else else
......
...@@ -283,9 +283,9 @@ struct tport_master { ...@@ -283,9 +283,9 @@ struct tport_master {
/**< Timer reclaiming unused connections and compartment */ /**< Timer reclaiming unused connections and compartment */
su_timer_t *mr_timer; su_timer_t *mr_timer;
/** File to dump received and sent data */ /** FILE to dump received and sent data */
FILE *mr_dump_file; FILE *mr_dump_file;
char *mr_dump; /**< Filename for dumping received/sent data */
tport_primary_t *mr_primaries; /**< List of primary contacts */ tport_primary_t *mr_primaries; /**< List of primary contacts */
tport_params_t mr_params[1]; tport_params_t mr_params[1];
...@@ -453,7 +453,7 @@ int tport_recv_error_report(tport_t *self); ...@@ -453,7 +453,7 @@ int tport_recv_error_report(tport_t *self);
void tport_error_report(tport_t *self, int errcode, void tport_error_report(tport_t *self, int errcode,
su_sockaddr_t const *addr); su_sockaddr_t const *addr);
void tport_open_log(tport_master_t *mr, tagi_t *tags); int tport_open_log(tport_master_t *mr, tagi_t *tags);
void tport_log_msg(tport_t *tp, msg_t *msg, char const *what, void tport_log_msg(tport_t *tp, msg_t *msg, char const *what,
char const *via, su_time_t now); char const *via, su_time_t now);
void tport_dump_iovec(tport_t const *self, msg_t *msg, void tport_dump_iovec(tport_t const *self, msg_t *msg,
......
...@@ -94,30 +94,43 @@ su_log_t tport_log[] = { ...@@ -94,30 +94,43 @@ su_log_t tport_log[] = {
/** Initialize logging. */ /** Initialize logging. */
void tport_open_log(tport_master_t *mr, tagi_t *tags) int tport_open_log(tport_master_t *mr, tagi_t *tags)
{ {
char const *log = NULL; int log_msg = mr->mr_log != 0;
int log_msg = 0; char const *dump = NULL;
int n;
tl_gets(tags, TPTAG_LOG_REF(log_msg), TAG_END());
n = tl_gets(tags,
TPTAG_LOG_REF(log_msg),
TPTAG_DUMP_REF(dump),
TAG_END());
if (getenv("MSG_STREAM_LOG") != NULL || getenv("TPORT_LOG") != NULL) if (getenv("MSG_STREAM_LOG") != NULL || getenv("TPORT_LOG") != NULL)
log_msg = 1; log_msg = 1;
mr->mr_log = log_msg ? MSG_DO_EXTRACT_COPY : 0; mr->mr_log = log_msg ? MSG_DO_EXTRACT_COPY : 0;
tl_gets(tags, TPTAG_DUMP_REF(log), TAG_END());
if (getenv("MSG_DUMP")) if (getenv("MSG_DUMP"))
log = getenv("MSG_DUMP"); dump = getenv("MSG_DUMP");
if (getenv("TPORT_DUMP")) if (getenv("TPORT_DUMP"))
log = getenv("TPORT_DUMP"); dump = getenv("TPORT_DUMP");
if (log) { if (dump) {
time_t now; time_t now;
char *dumpname;
if (strcmp(log, "-")) if (mr->mr_dump && strcmp(dump, mr->mr_dump) == 0)
mr->mr_dump_file = fopen(log, "ab"); /* XXX */ return n;
dumpname = su_strdup(mr->mr_home, dump);
if (dumpname == NULL)
return n;
su_free(mr->mr_home, mr->mr_dump);
mr->mr_dump = dumpname;
if (mr->mr_dump_file && mr->mr_dump_file != stdout)
fclose(mr->mr_dump_file), mr->mr_dump_file = NULL;
if (strcmp(dumpname, "-"))
mr->mr_dump_file = fopen(dumpname, "ab"); /* XXX */
else else
mr->mr_dump_file = stdout; mr->mr_dump_file = stdout;
...@@ -126,6 +139,8 @@ void tport_open_log(tport_master_t *mr, tagi_t *tags) ...@@ -126,6 +139,8 @@ void tport_open_log(tport_master_t *mr, tagi_t *tags)
fprintf(mr->mr_dump_file, "dump started at %s\n\n", ctime(&now)); fprintf(mr->mr_dump_file, "dump started at %s\n\n", ctime(&now));
} }
} }
return n;
} }
/** Create log stamp */ /** Create log stamp */
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论