From: Fredrik Tolf Date: Fri, 6 Oct 2017 20:12:16 +0000 (+0200) Subject: Merge branch 'master' of git://git.dolda2000.com/doldaconnect X-Git-Url: http://dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=88a8d885a8daee56b19365966e6c495c3b913117;hp=ef0869333c2908986a501759445136bcdf57ceec Merge branch 'master' of git://git.dolda2000.com/doldaconnect --- diff --git a/acinclude.m4 b/acinclude.m4 index 493f374..9f24860 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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 diff --git a/configure.in b/configure.in index 0fe4293..4d103df 100644 --- a/configure.in +++ b/configure.in @@ -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]) diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index fd7a79d..85ba9a0 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -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;