Merge branch 'master' of git://git.dolda2000.com/doldaconnect
authorFredrik Tolf <fredrik@dolda2000.com>
Fri, 6 Oct 2017 20:12:16 +0000 (22:12 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Fri, 6 Oct 2017 20:12:16 +0000 (22:12 +0200)
acinclude.m4
configure.in
daemon/fnet-dc.c

index 493f374..9f24860 100644 (file)
@@ -55,7 +55,7 @@ AC_DEFUN([DOLDA_ENABLE],[dnl
 AC_ARG_ENABLE([$1], [$2])
 if test "[$enable_][$1]" = yes; then
        for var in [$4]; do
-               if test "${!var}" != yes; then
+               if test "$(eval "echo \$$var")" != yes; then
                        AC_MSG_ERROR([*** cannot enable $1 without $var])
                fi
        done
@@ -63,7 +63,7 @@ elif test -z "[$enable_][$1]"; then
        ifelse([$3], yes, [dnl
        [enable_][$1]=yes
        for var in [$4]; do
-               if test "${!var}" != yes; then
+               if test "$(eval "echo \$$var")" != yes; then
                        [enable_][$1]=no
                        break
                fi
index 0fe4293..4d103df 100644 (file)
@@ -1,6 +1,8 @@
-AC_INIT(daemon/main.c)
-AM_INIT_AUTOMAKE([doldaconnect], [1.4])
+AC_INIT([doldaconnect], [1.4])
+AC_CONFIG_SRCDIR(daemon/main.c)
+AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(config.h)
+AC_USE_SYSTEM_EXTENSIONS
 
 DOLDA_AC_GROUP([Checking build chain])
 
index fd7a79d..85ba9a0 100644 (file)
@@ -553,6 +553,8 @@ static char **parseadc(char *args)
                state = 3;
            else if(*args != ' ')
                state = 1;
+           else
+               args++;
            break;
        case 1:
            if((*args == ' ') || (*args == 0))
@@ -1123,7 +1125,7 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
     int minsize, maxsize;
     int dotth;
     size_t buflen;
-    int termnum, satisfied, skipcheck;
+    int termnum, satisfied, matches, skipcheck, proper;
     int level, tersat[32];
     wchar_t *terms[32], *lname;
     char hashtth[24];
@@ -1192,6 +1194,7 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
     termnum = 0;
     p2 = p;
     done = 0;
+    proper = 0;
     while(!done)
     {
        if((*p2 == 0) || (*p2 == '$'))
@@ -1215,6 +1218,8 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
                } else {
                    if((terms[termnum] = icmbstowcs(p, hub->charset)) != NULL) {
                        wcslower(terms[termnum]);
+                       if(wcslen(terms[termnum]) > 1)
+                           proper = 1;
                        termnum++;
                    }
                }
@@ -1225,12 +1230,15 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
        }
        p2++;
     }
+    if(!proper)
+       goto out;
     
     node = shareroot->child;
     level = 0;
     for(i = 0; i < termnum; i++)
        tersat[i] = -1;
     satisfied = 0;
+    matches = 0;
     while(1)
     {
        skipcheck = 0;
@@ -1277,6 +1285,8 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char *
                    qstrf(dsk, "%s%s\005%ji%s%s%s", prefix, buf, (intmax_t)node->size, infix, hub->nativename, postfix);
                }
                free(buf);
+               if(++matches >= 20)
+                   break;
            }
        }
        if((!skipcheck && (satisfied == termnum)) || (node->child == NULL))
@@ -1616,7 +1626,7 @@ static void cmd_direction(struct socket *sk, struct dcpeer *peer, char *cmd, cha
        if(peer->direction == TRNSD_DOWN)
            requestfile(peer);
     } else {
-       if(peer->wcsname == NULL)
+       if((peer->wcsname == NULL) || (peer->transfer != NULL))
        {
            peer->close = 1;
            return;