📄 mm.c
字号:
list = &mm->user_delete; nlist = &mm->nuser_delete; break; } for(j = 0; j < *nlist; j++) { mi = (*list)[j]; if(mi->arg != NULL) free(mi->arg); free(mi); } } /* free lists */ free(mm->sess_start); free(mm->sess_end); free(mm->in_sess); free(mm->in_router); free(mm->out_sess); free(mm->out_router); free(mm->pkt_sm); free(mm->pkt_user); free(mm->pkt_router); free(mm->user_load); free(mm->user_create); free(mm->user_delete); xhash_free(mm->modules); free(mm);}/** session starting */int mm_sess_start(mm_t mm, sess_t sess) { int n, ret = 0; mod_instance_t mi; log_debug(ZONE, "dispatching sess-start chain"); ret = 0; for(n = 0; n < mm->nsess_start; n++) { mi = mm->sess_start[n]; if(mi == NULL || mi->mod->sess_start == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->sess_start)(mi, sess); if(ret != 0) break; } log_debug(ZONE, "sess-start chain returning %d", ret); return ret;}/** session ending */void mm_sess_end(mm_t mm, sess_t sess) { int n; mod_instance_t mi; log_debug(ZONE, "dispatching sess-end chain"); for(n = 0; n < mm->nsess_end; n++) { mi = mm->sess_end[n]; if(mi == NULL || mi->mod->sess_end == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); (mi->mod->sess_end)(mi, sess); } log_debug(ZONE, "sess-end chain returning");}/** packets from active session */mod_ret_t mm_in_sess(mm_t mm, sess_t sess, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching in-sess chain"); ret = mod_PASS; for(n = 0; n < mm->nin_sess; n++) { mi = mm->in_sess[n]; if(mi == NULL || mi->mod->in_sess == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->in_sess)(mi, sess, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "in-sess chain returning %d", ret); return ret;}/** packets from router */mod_ret_t mm_in_router(mm_t mm, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching in-router chain"); for(n = 0; n < mm->nin_router; n++) { mi = mm->in_router[n]; if(mi == NULL || mi->mod->in_router == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->in_router)(mi, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "in-router chain returning %d", ret); return ret;}/** packets to active session */mod_ret_t mm_out_sess(mm_t mm, sess_t sess, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching out-sess chain"); for(n = 0; n < mm->nout_sess; n++) { mi = mm->out_sess[n]; if(mi == NULL || mi->mod->out_sess == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->out_sess)(mi, sess, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "out-sess chain returning %d", ret); return ret;}/** packets to router */mod_ret_t mm_out_router(mm_t mm, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching out-router chain"); for(n = 0; n < mm->nout_router; n++) { mi = mm->out_router[n]; if(mi == NULL || mi->mod->out_router == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->out_router)(mi, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "out-router chain returning %d", ret); return ret;}/** packets for sm */mod_ret_t mm_pkt_sm(mm_t mm, pkt_t pkt) { int n, ret = 0; mod_instance_t mi; log_debug(ZONE, "dispatching pkt-sm chain"); for(n = 0; n < mm->npkt_sm; n++) { mi = mm->pkt_sm[n]; if(mi == NULL || mi->mod->pkt_sm == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->pkt_sm)(mi, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "pkt-sm chain returning %d", ret); return ret;}/** packets for user */mod_ret_t mm_pkt_user(mm_t mm, user_t user, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching pkt-user chain"); for(n = 0; n < mm->npkt_user; n++) { mi = mm->pkt_user[n]; if(mi == NULL || mi->mod->pkt_user == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->pkt_user)(mi, user, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "pkt-user chain returning %d", ret); return ret;}/** packets from the router */mod_ret_t mm_pkt_router(mm_t mm, pkt_t pkt) { int n; mod_instance_t mi; mod_ret_t ret = mod_PASS; log_debug(ZONE, "dispatching pkt-router chain"); for(n = 0; n < mm->npkt_router; n++) { mi = mm->pkt_router[n]; if(mi == NULL || mi->mod->pkt_router == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->pkt_router)(mi, pkt); if(ret != mod_PASS) break; } log_debug(ZONE, "pkt-router chain returning %d", ret); return ret;}/** load user data */int mm_user_load(mm_t mm, user_t user) { int n; mod_instance_t mi; int ret = 0; log_debug(ZONE, "dispatching user-load chain"); for(n = 0; n < mm->nuser_load; n++) { mi = mm->user_load[n]; if(mi == NULL || mi->mod->user_load == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->user_load)(mi, user); if(ret != 0) break; } log_debug(ZONE, "user-load chain returning %d", ret); return ret;}/** create user */int mm_user_create(mm_t mm, jid_t jid) { int n; mod_instance_t mi; int ret = 0; log_debug(ZONE, "dispatching user-create chain"); for(n = 0; n < mm->nuser_create; n++) { mi = mm->user_create[n]; if(mi == NULL || mi->mod->user_create == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); ret = (mi->mod->user_create)(mi, jid); if(ret != 0) break; } log_debug(ZONE, "user-create chain returning %d", ret); return ret;}/** delete user */void mm_user_delete(mm_t mm, jid_t jid) { int n; mod_instance_t mi; log_debug(ZONE, "dispatching user-delete chain"); for(n = 0; n < mm->nuser_delete; n++) { mi = mm->user_delete[n]; if(mi == NULL || mi->mod->user_delete == NULL) { log_debug(ZONE, "module %s has no handler for this chain", mi->mod->name); continue; } log_debug(ZONE, "calling module %s", mi->mod->name); (mi->mod->user_delete)(mi, jid); } log_debug(ZONE, "user-delete chain returning");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -