Ticket #23: ping.2.diff
| File ping.2.diff, 1.7 KB (added by DeSnajpa, 19 months ago) |
|---|
-
mod_iq_ping.
old new 30 30 #define uri_PING "urn:xmpp:ping" 31 31 static int ns_PING = 0; 32 32 33 static mod_ret_t _iq_ping_pkt_sm(mod_instance_t mi, pkt_t pkt) 34 { 33 static mod_ret_t _iq_ping_in_sess(mod_instance_t mi, sess_t sess, pkt_t pkt) { 34 int ns,elem; 35 if(pkt->to != NULL || pkt->type != pkt_IQ || pkt->ns != ns_PING) 36 return mod_PASS; 37 ns = nad_find_scoped_namespace(pkt->nad, uri_PING, NULL); 38 elem = nad_find_elem(pkt->nad, 1, ns, "ping", 1); 39 if (elem>=0) 40 nad_drop_elem(pkt->nad,elem); 41 nad_set_attr(pkt->nad, 1, -1, "type", "result", 6); 42 pkt_sess(pkt, sess); 43 return mod_HANDLED; 44 } 45 46 47 static mod_ret_t _iq_ping_pkt_sm(mod_instance_t mi, pkt_t pkt) { 35 48 int ns,elem; 36 /* we only want to play with iq:pinggets */37 49 if(pkt->type != pkt_IQ || pkt->ns != ns_PING) 38 50 return mod_PASS; 39 /* remove <ping xmlns='urn:xmpp:ping'/> tag */40 51 ns = nad_find_scoped_namespace(pkt->nad, uri_PING, NULL); 41 52 elem = nad_find_elem(pkt->nad, 1, ns, "ping", 1); 42 if (elem>=0) /* too much security wont kill */53 if (elem>=0) 43 54 nad_drop_elem(pkt->nad,elem); 44 /* tell them */45 55 nad_set_attr(pkt->nad, 1, -1, "type", "result", 6); 46 56 pkt_router(pkt_tofrom(pkt)); 47 57 return mod_HANDLED; … … 54 64 55 65 DLLEXPORT int module_init(mod_instance_t mi, char *arg) { 56 66 module_t mod = mi->mod; 57 58 67 if(mod->init) return 0; 59 60 68 mod->pkt_sm = _iq_ping_pkt_sm; 69 mod->in_sess = _iq_ping_in_sess; 61 70 mod->free = _iq_ping_free; 62 71 63 72 ns_PING = sm_register_ns(mod->mm->sm, uri_PING); … … 65 74 66 75 return 0; 67 76 } 77
