Added some debug messaging.
[doldaconnect.git] / lib / uimisc.c
index c39ad76..3706aeb 100644 (file)
@@ -87,22 +87,19 @@ struct fnetcbdata
 struct dc_fnetnode *dc_fnetnodes = NULL;
 struct dc_transfer *dc_transfers = NULL;
 
-static void message(char *format, ...)
+static void message(int bits, char *format, ...)
 {
-    static int on = -1;
+    static int hb = -1;
     char *v;
     va_list args;
     
-    if(on == -1)
+    if(hb == -1)
     {
-       on = 0;
+       hb = 0;
        if((v = getenv("LIBDCUI_MSG")) != NULL)
-       {
-           if(strtol(v, NULL, 0) & 1)
-               on = 1;
-       }
+           hb = strtol(v, NULL, 0) & 65535;
     }
-    if(on == 1)
+    if(hb & bits)
     {
        va_start(args, format);
        vfprintf(stderr, format, args);
@@ -284,7 +281,7 @@ static void process_krb5(struct dc_response *resp, struct logindata *data)
                    krb->reqbuf.data = NULL;
                    if((ret = krb5_fwd_tgt_creds(krb->context, krb->authcon, NULL, krb->servcreds->client, krb->servcreds->server, 0, 1, &krb->reqbuf)) != 0)
                    {
-                       message("krb5_fwd_tgt_creds reported an error: %s\n", error_message(ret));
+                       message(1, "krb5_fwd_tgt_creds reported an error: %s\n", error_message(ret));
                        dc_queuecmd(logincallback, data, L"pass", L"31", NULL);
                        krb->fwd = 0;
                        krb->state = 2;
@@ -331,7 +328,7 @@ static int init_krb5(struct logindata *data)
     
     if(dc_gethostname() == NULL)
     {
-       message("cannot use krb5 without a host name");
+       message(1, "cannot use krb5 without a host name");
        return(1);
     }
     krb = smalloc(sizeof(*krb));
@@ -341,28 +338,28 @@ static int init_krb5(struct logindata *data)
     data->mechdata = krb;
     if((ret = krb5_init_context(&krb->context)) != 0)
     {
-       message("krb5_init_context reported an error: %s\n", error_message(ret));
+       message(1, "krb5_init_context reported an error: %s\n", error_message(ret));
        return(1);
     }
     if((ret = krb5_auth_con_init(krb->context, &krb->authcon)) != 0)
     {
-       message("krb5_auth_con_init reported an error: %s\n", error_message(ret));
+       message(1, "krb5_auth_con_init reported an error: %s\n", error_message(ret));
        return(1);
     }
     krb5_auth_con_setflags(krb->context, krb->authcon, KRB5_AUTH_CONTEXT_DO_SEQUENCE);
     if((ret = krb5_sname_to_principal(krb->context, dc_gethostname(), "doldacond", KRB5_NT_SRV_HST, &krb->sprinc)) != 0)
     {
-       message("krb5_sname_to_principal reported an error: %s\n", error_message(ret));
+       message(1, "krb5_sname_to_principal reported an error: %s\n", error_message(ret));
        return(1);
     }
     if((ret = krb5_cc_default(krb->context, &krb->ccache)) != 0)
     {
-       message("krb5_cc_default reported an error: %s\n", error_message(ret));
+       message(1, "krb5_cc_default reported an error: %s\n", error_message(ret));
        return(1);
     }
     if((ret = krb5_cc_get_principal(krb->context, krb->ccache, &krb->myprinc)) != 0)
     {
-       message("krb5_cc_default reported an error: %s\n", error_message(ret));
+       message(1, "krb5_cc_default reported an error: %s\n", error_message(ret));
        return(1);
     }
     memset(&creds, 0, sizeof(creds));
@@ -370,7 +367,7 @@ static int init_krb5(struct logindata *data)
     creds.server = krb->sprinc;
     if((ret = krb5_get_credentials(krb->context, 0, krb->ccache, &creds, &krb->servcreds)) != 0)
     {
-       message("krb5_get_credentials reported an error: %s\n", error_message(ret));
+       message(1, "krb5_get_credentials reported an error: %s\n", error_message(ret));
        return(1);
     }
     /* WTF is this checksum stuff?! The Krb docs don't say a word about it! */
@@ -378,7 +375,7 @@ static int init_krb5(struct logindata *data)
     cksum.length = strlen(cksum.data);
     if((ret = krb5_mk_req_extended(krb->context, &krb->authcon, AP_OPTS_MUTUAL_REQUIRED, &cksum, krb->servcreds, &krb->reqbuf)) != 0)
     {
-       message("krb5_mk_req_extended reported an error: %s\n", error_message(ret));
+       message(1, "krb5_mk_req_extended reported an error: %s\n", error_message(ret));
        return(1);
     }
     free(cksum.data);
@@ -498,12 +495,13 @@ static int logincallback(struct dc_response *resp)
                    {
                        odata = data->mechdata;
                        data->mechdata = NULL;
+                       message(4, "trying auth mech %ls\n", authmechs[i].name);
                        if((authmechs[i].init != NULL) && authmechs[i].init(data))
                        {
                            if(authmechs[i].release != NULL)
                                authmechs[i].release(data);
                            data->mechdata = odata;
-                           message("authentication mechanism %ls failed, trying further...\n", authmechs[i].name);
+                           message(2, "authentication mechanism %ls failed, trying further...\n", authmechs[i].name);
                        } else {
                            if((data->mech != NULL) && data->mech->release != NULL)
                            {