Ticket #23: ping.2.diff

File ping.2.diff, 1.7 KB (added by DeSnajpa, 19 months ago)

supports in-sess

  • mod_iq_ping.

    old new  
    3030#define uri_PING "urn:xmpp:ping" 
    3131static int ns_PING = 0; 
    3232 
    33 static mod_ret_t _iq_ping_pkt_sm(mod_instance_t mi, pkt_t pkt) 
    34 { 
     33static 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 
     47static mod_ret_t _iq_ping_pkt_sm(mod_instance_t mi, pkt_t pkt) { 
    3548    int ns,elem; 
    36     /* we only want to play with iq:pinggets */ 
    3749    if(pkt->type != pkt_IQ || pkt->ns != ns_PING) 
    3850        return mod_PASS; 
    39     /* remove <ping xmlns='urn:xmpp:ping'/> tag */ 
    4051    ns = nad_find_scoped_namespace(pkt->nad, uri_PING, NULL); 
    4152    elem = nad_find_elem(pkt->nad, 1, ns, "ping", 1); 
    42     if (elem>=0) /* too much security wont kill */ 
     53    if (elem>=0) 
    4354       nad_drop_elem(pkt->nad,elem); 
    44     /* tell them */ 
    4555    nad_set_attr(pkt->nad, 1, -1, "type", "result", 6); 
    4656    pkt_router(pkt_tofrom(pkt)); 
    4757    return mod_HANDLED; 
     
    5464 
    5565DLLEXPORT int module_init(mod_instance_t mi, char *arg) { 
    5666    module_t mod = mi->mod; 
    57  
    5867    if(mod->init) return 0; 
    59  
    6068    mod->pkt_sm = _iq_ping_pkt_sm; 
     69    mod->in_sess = _iq_ping_in_sess; 
    6170    mod->free = _iq_ping_free; 
    6271 
    6372    ns_PING = sm_register_ns(mod->mm->sm, uri_PING); 
     
    6574 
    6675    return 0; 
    6776} 
     77