Ticket #863: sasl_optional_HIDDEN_DEFAULT_flag.patch

File sasl_optional_HIDDEN_DEFAULT_flag.patch, 2.9 KB (added by tom@…, at 2011-11-28T13:16:57Z)

allow disabling of sasl auth/ new flag SET_HIDDEN_DEFAULT

  • protocols/jabber/io.c

    === modified file 'protocols/jabber/io.c'
     
    211211                                /* If there's no version attribute, assume
    212212                                   this is an old server that can't do SASL
    213213                                   authentication. */
    214                                 if( !sasl_supported( ic ) )
     214                                if( !set_getbool( &ic->acc->set, "sasl") || !sasl_supported( ic ) )
    215215                                {
    216216                                        /* If there's no version= tag, we suppose
    217217                                           this server does NOT implement: XMPP 1.0,
     
    374374           support it after all, we should try to do authentication the
    375375           other way. jabber.com doesn't seem to do SASL while it pretends
    376376           to be XMPP 1.0 compliant! */
    377         else if( !( jd->flags & JFLAG_AUTHENTICATED ) && sasl_supported( ic ) )
     377        else if( !( jd->flags & JFLAG_AUTHENTICATED ) && set_getbool( &ic->acc->set, "sasl") && sasl_supported( ic ) )
    378378        {
    379379                if( !jabber_init_iq_auth( ic ) )
    380380                        return XT_ABORT;
  • protocols/jabber/jabber.c

    === modified file 'protocols/jabber/jabber.c'
     
    8181        s = set_add( &acc->set, "tls", "try", set_eval_tls, acc );
    8282        s->flags |= ACC_SET_OFFLINE_ONLY;
    8383       
     84        s = set_add( &acc->set, "sasl", "true", set_eval_bool, acc );
     85        s->flags |= ACC_SET_OFFLINE_ONLY;
     86        s->flags |= SET_HIDDEN_DEFAULT;
     87
    8488        s = set_add( &acc->set, "user_agent", "BitlBee", NULL, acc );
    8589       
    8690        s = set_add( &acc->set, "xmlconsole", "false", set_eval_bool, acc );
  • root_commands.c

    === modified file 'root_commands.c'
     
    361361                set_t *s = *head;
    362362                while( s )
    363363                {
    364                         if( !( s->flags & SET_HIDDEN ) )
    365                                 cmd_showset( irc, &s, s->key );
    366                         s = s->next;
     364                  if( set_isvisible(s) )
     365                        cmd_showset( irc, &s, s->key );
     366                  s = s->next;
    367367                }
    368368        }
    369369       
  • set.c

    === modified file 'set.c'
     
    111111        return bool2int( s );
    112112}
    113113
     114int set_isvisible( set_t *set)
     115{
     116  /* the default value is not stored in value, only in def */
     117  return !( ( set->flags & SET_HIDDEN )
     118                   || ( (set->flags & SET_HIDDEN_DEFAULT)
     119                                && ( set->value == NULL)));
     120}
     121
    114122int set_setstr( set_t **head, const char *key, char *value )
    115123{
    116124        set_t *s = set_find( head, key );
  • set.h

    === modified file 'set.h'
     
    4848        SET_NULL_OK = 0x0100,
    4949        SET_HIDDEN = 0x0200,
    5050        SET_PASSWORD = 0x0400,
     51        SET_HIDDEN_DEFAULT = 0x0800,
    5152} set_flags_t;
    5253
    5354typedef struct set
     
    9798void set_del( set_t **head, const char *key );
    9899int set_reset( set_t **head, const char *key );
    99100
     101/* returns true if a setting shall be shown to the user */
     102int set_isvisible(set_t *set);
     103
    100104/* Two very useful generic evaluators. */
    101105char *set_eval_int( set_t *set, char *value );
    102106char *set_eval_bool( set_t *set, char *value );