version 1.2.2.44, 2012/07/03 07:48:49
|
version 1.2.2.47, 2012/07/03 08:39:39
|
Line 77 finiSession(struct tagSession *sess)
|
Line 77 finiSession(struct tagSession *sess)
|
call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%"); |
call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%"); |
if (call.DeletePUB_subscribe) |
if (call.DeletePUB_subscribe) |
call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, "%", sess->sess_user, "%"); |
call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, "%", sess->sess_user, "%"); |
if (call.WipePUB_topic) | if (call.WipePUB_topic) /* only dynamic messages */ |
call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1); | call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, 0); |
} |
} |
|
|
while ((store = SLIST_FIRST(&sess->sess_subscr))) { |
while ((store = SLIST_FIRST(&sess->sess_subscr))) { |
Line 222 startSession(sched_task_t *task)
|
Line 222 startSession(sched_task_t *task)
|
int ret, wlen; |
int ret, wlen; |
mqtt_subscr_t *subs; |
mqtt_subscr_t *subs; |
struct timespec ts = { RETAIN_TIMEOUT, 0 }; |
struct timespec ts = { RETAIN_TIMEOUT, 0 }; |
|
intptr_t sock; |
|
|
ioTRACE(4); |
ioTRACE(4); |
|
|
Line 285 startSession(sched_task_t *task)
|
Line 286 startSession(sched_task_t *task)
|
TAILQ_FOREACH(s, &Sessions, sess_node) |
TAILQ_FOREACH(s, &Sessions, sess_node) |
if (!strcmp(s->sess_cid, sess->sess_cid)) { |
if (!strcmp(s->sess_cid, sess->sess_cid)) { |
/* found stale session & disconnect it! */ |
/* found stale session & disconnect it! */ |
schedCancelby(root, taskMAX, CRITERIA_FD, (void*) s->sess_sock, NULL); | sock = s->sess_sock; |
| schedCancelby(root, taskMAX, CRITERIA_FD, (void*) sock, NULL); |
schedWrite(root, leaveClient, s, s->sess_sock, NULL, 0); |
schedWrite(root, leaveClient, s, s->sess_sock, NULL, 0); |
break; |
break; |
} |
} |
Line 305 startSession(sched_task_t *task)
|
Line 307 startSession(sched_task_t *task)
|
if (sess->sess_clean) { |
if (sess->sess_clean) { |
if (call.DeletePUB_subscribe) |
if (call.DeletePUB_subscribe) |
call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, "%", sess->sess_user, "%"); |
call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, "%", sess->sess_user, "%"); |
if (call.WipePUB_topic) | if (call.WipePUB_topic) /* delete ALL messages */ |
call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1); |
call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1); |
} else if (call.ReadPUB_subscribe) { |
} else if (call.ReadPUB_subscribe) { |
/* load subscribes */ |
/* load subscribes */ |
Line 404 Run(int sock)
|
Line 406 Run(int sock)
|
|
|
schedPolling(root, &pl, NULL); |
schedPolling(root, &pl, NULL); |
schedRun(root, &Kill); |
schedRun(root, &Kill); |
|
|
|
schedCancelby(root, taskTIMER, CRITERIA_CALL, sendRetain, NULL); |
|
|
/* free all undeleted elements into lists */ |
/* free all undeleted elements into lists */ |
TAILQ_FOREACH(sess, &Sessions, sess_node) { |
TAILQ_FOREACH(sess, &Sessions, sess_node) { |