Add trytransferbypeer.
[doldaconnect.git] / daemon / fnet-dc.c
index 7175259..d295148 100644 (file)
@@ -106,7 +106,7 @@ struct dchub
     char *inbuf;
     size_t inbufdata, inbufsize;
     struct qcommand *queue;
-    int extended, isop;
+    int extended;
     char *nativename;
     char *nativenick;
 };
@@ -729,23 +729,30 @@ static void sendmyinfo(struct socket *sk, struct fnetnode *fn)
     struct dchub *hub;
     char *buf;
     struct fnetnode *cfn;
-    int numhubs;
+    int hn1, hn2, hn3;
     
     hub = fn->data;
     qstrf(sk, "$MyINFO $ALL %s ", hub->nativenick);
     buf = tr(icswcstombs(confgetstr("dc", "desc"), DCCHARSET, "Charset_conv_failure"), "$_|_");
     qstrf(sk, "%s", buf);
-    numhubs = 0;
+    hn1 = hn2 = hn3 = 0;
     for(cfn = fnetnodes; cfn != NULL; cfn = cfn->next)
     {
        if((cfn->state == FNN_EST) || (cfn->state == FNN_HS))
-           numhubs++;
+       {
+           if(cfn->regstatus == FNNS_OP)
+               hn3++;
+           else if(cfn->regstatus == FNNS_REG)
+               hn2++;
+           else
+               hn1++;
+       }
     }
-    qstrf(sk, "<%s V:%s,M:%c,H:%i/0/0,S:%i>",
+    qstrf(sk, "<%s V:%s,M:%c,H:%i/%i/%i,S:%i>",
          DCIDTAG,
          DCIDTAGV,
          (tcpsock == NULL)?'P':'A',
-         numhubs,
+         hn1, hn2, hn3,
          confgetint("transfer", "slots")
          );
     qstrf(sk, "$ $");
@@ -1445,6 +1452,7 @@ static void cmd_getpass(struct socket *sk, struct fnetnode *fn, char *cmd, char
     }
     qstrf(sk, "$MyPass %s|", mbspw);
     free(mbspw);
+    fn->regstatus = FNNS_REG;
     hubhandleaction(sk, fn, cmd, args);
 }
 
@@ -1453,7 +1461,7 @@ static void cmd_logedin(struct socket *sk, struct fnetnode *fn, char *cmd, char
     struct dchub *hub;
     
     hub = fn->data;
-    hub->isop = 1;
+    fn->regstatus = FNNS_OP;
     hubhandleaction(sk, fn, cmd, args);
 }