Changeset e101506


Ignore:
Timestamp:
2006-09-24T17:22:08Z (13 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
cfbb3a6
Parents:
42127dc
Message:

Better handling of user tls setting.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/io.c

    r42127dc re101506  
    247247        struct jabber_data *jd = gc->proto_data;
    248248        struct xt_node *c, *reply;
    249        
     249        int trytls;
     250       
     251        trytls = g_strcasecmp( set_getstr( &gc->acc->set, "tls" ), "try" ) == 0;
    250252        c = xt_find_node( node->children, "starttls" );
    251253        if( c && !jd->ssl )
     
    254256                   not in a secure connection already: */
    255257               
    256                 int try;
    257                
    258                 try = g_strcasecmp( set_getstr( &gc->acc->set, "tls" ), "try" ) == 0;
    259258                c = xt_find_node( c->children, "required" );
    260259               
     260                if( c && ( !trytls && !set_getbool( &gc->acc->set, "tls" ) ) )
     261                {
     262                        hide_login_progress( gc, "Server requires TLS connections, but TLS is turned off for this account" );
     263                        signoff( gc );
     264                       
     265                        return XT_ABORT;
     266                }
     267               
    261268                /* Only run this if the tls setting is set to true or try: */
    262                 if( ( try | set_getbool( &gc->acc->set, "tls" ) ) )
     269                if( ( trytls || set_getbool( &gc->acc->set, "tls" ) ) )
    263270                {
    264271                        reply = xt_new_node( "starttls", NULL, NULL );
     
    274281                }
    275282        }
    276         else
    277         {
    278                 /* TODO: Abort if TLS is required by the user. */
     283        else if( !c && !jd->ssl )
     284        {
     285                /* If the server does not advertise the STARTTLS feature and
     286                   we're not in a secure connection already: (Servers have a
     287                   habit of not advertising <starttls/> anymore when already
     288                   using SSL/TLS. */
     289               
     290                if( !trytls && set_getbool( &gc->acc->set, "tls" ) )
     291                {
     292                        hide_login_progress( gc, "TLS is turned on for this account, but is not supported by this server" );
     293                        signoff( gc );
     294                       
     295                        return XT_ABORT;
     296                }
    279297        }
    280298       
Note: See TracChangeset for help on using the changeset viewer.