Changeset 315dd4c


Ignore:
Timestamp:
2010-03-15T01:25:47Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
9fca0657
Parents:
7e2b593
Message:

Oops.. Today's Jabber fix could get stuck in a somewhat infinite loop if a
Jabber server returns an empty <iq type="result"/> response to the session
establishment request (which is valid and actually done by the example, but
my test Jabberd shows different behaviour). Fixed.

Location:
protocols/jabber
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/io.c

    r7e2b593 r315dd4c  
    380380                jd->flags |= JFLAG_WANT_SESSION;
    381381       
    382         /* This flag is already set if we authenticated via SASL, so now
    383            we can resume the session in the new stream, if we don't have
    384            to bind/initialize the session. */
    385         if( jd->flags & JFLAG_AUTHENTICATED && ( jd->flags & ( JFLAG_WANT_BIND | JFLAG_WANT_SESSION ) ) == 0 )
    386         {
    387                 if( !jabber_get_roster( ic ) )
    388                         return XT_ABORT;
    389         }
    390         else if( jd->flags & JFLAG_AUTHENTICATED )
    391         {
     382        if( jd->flags & JFLAG_AUTHENTICATED )
    392383                return jabber_pkt_bind_sess( ic, NULL, NULL );
    393         }
    394384       
    395385        return XT_HANDLED;
  • protocols/jabber/iq.c

    r7e2b593 r315dd4c  
    307307                    strcmp( s + 1, set_getstr( &ic->acc->set, "resource" ) ) != 0 )
    308308                        imcb_log( ic, "Server changed session resource string to `%s'", s + 1 );
    309                
    310                 jd->flags &= ~JFLAG_WANT_BIND;
    311         }
    312         else if( node && ( c = xt_find_node( node->children, "session" ) ) )
    313         {
    314                 jd->flags &= ~JFLAG_WANT_SESSION;
    315309        }
    316310       
     
    319313                reply = xt_new_node( "bind", NULL, xt_new_node( "resource", set_getstr( &ic->acc->set, "resource" ), NULL ) );
    320314                xt_add_attr( reply, "xmlns", XMLNS_BIND );
     315                jd->flags &= ~JFLAG_WANT_BIND;
    321316        }
    322317        else if( jd->flags & JFLAG_WANT_SESSION )
     
    324319                reply = xt_new_node( "session", NULL, NULL );
    325320                xt_add_attr( reply, "xmlns", XMLNS_SESSION );
     321                jd->flags &= ~JFLAG_WANT_SESSION;
    326322        }
    327323       
Note: See TracChangeset for help on using the changeset viewer.