Make {hub,peer}cmds static as they should be.
[doldaconnect.git] / daemon / fnet-dc.c
index 54daeb7..ee5e423 100644 (file)
@@ -1083,7 +1083,8 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
     struct sockaddr_in addr;
     struct sharecache *node;
     int minsize, maxsize;
-    int dotth, buflen;
+    int dotth;
+    size_t buflen;
     int termnum, satisfied, skipcheck;
     int level, tersat[32];
     wchar_t *terms[32];
@@ -1166,10 +1167,11 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
                if(!dotth && !strncmp(p, "TTH:", 4))
                {
                    dotth = 1;
-                   if((buf = base32decode(p + 4, &buflen)) == NULL)
-                       goto out;
-                   if(buflen != 24)
+                   if(((buf = base32decode(p + 4, &buflen)) == NULL) || (buflen != 24))
+                   {
+                       free(buf);
                        goto out;
+                   }
                    memcpy(hashtth, buf, 24);
                    free(buf);
                } else {
@@ -1308,7 +1310,7 @@ static void sendctm(struct socket *sk, char *nick)
     
     if(tcpsock == NULL)
        return;
-    if(sockgetremotename(tcpsock, &addr, &addrlen) < 0)
+    if(sockgetremotename(sk, &addr, &addrlen) < 0)
        return;
     if(addr->sa_family == AF_INET)
        qstrf(sk, "$ConnectToMe %s %s|", nick, formataddress(addr, addrlen));
@@ -1600,6 +1602,7 @@ static void cmd_peerlock(struct socket *sk, struct dcpeer *peer, char *cmd, char
        peer->transfer = transfer;
        qstrf(sk, "$Direction %s %i|", (peer->direction == TRNSD_UP)?"Upload":"Download", rand() % 10000);
        qstrf(sk, "$Key %s|", key);
+       free(key);
     } else {
        if(peer->key != NULL)
            free(peer->key);
@@ -2516,7 +2519,7 @@ static int hubsearch(struct fnetnode *fn, struct search *srch, struct srchfnnlis
     addtobuf(sstr, 0);
     if(tcpsock != NULL)
     {
-       if(sockgetremotename(udpsock, &name, &namelen) < 0)
+       if(sockgetremotename(fn->sk, &name, &namelen) < 0)
        {
            flog(LOG_WARNING, "cannot get address of UDP socket");
        } else {
@@ -2537,7 +2540,7 @@ static int hubsearch(struct fnetnode *fn, struct search *srch, struct srchfnnlis
 #undef qstrf
 
 #define cc(c) ((void (*)(struct socket *, void *, char *, char *))(c))
-struct command hubcmds[] =
+static struct command hubcmds[] =
 {
     {"$Lock", cc(cmd_lock)},
     {"$HubName", cc(cmd_hubname)},
@@ -2560,7 +2563,7 @@ struct command hubcmds[] =
     {NULL, NULL}
 };
 
-struct command peercmds[] =
+static struct command peercmds[] =
 {
     {"$MyNick", cc(cmd_mynick)},
     {"$Lock", cc(cmd_peerlock)},
@@ -2596,7 +2599,7 @@ static void dctransgotdata(struct transfer *transfer, struct dcpeer *peer)
 {
     int ret;
     void *buf;
-    char outbuf[1024];
+    unsigned char outbuf[1024];
     z_stream *cstr;
     size_t bufsize;
     
@@ -3172,6 +3175,7 @@ static void peerconnect(struct socket *sk, int err, struct fnetnode *fn)
     if(err != 0)
     {
        putfnetnode(fn);
+       putsock(sk);
        return;
     }
     hub = fn->data;