X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ffnet-dc.c;h=b79e84d193d9ac7e1128d494872025c0042690c0;hb=cebcccafbd67c780d83fa2714d1a1a54f9ef6e7a;hp=152de4ae2281d34eff9de2239e03c81643f342f5;hpb=2bf4942d69d450fab471aeb7fa6de5a8cabdff8a;p=doldaconnect.git diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index 152de4a..b79e84d 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -59,24 +59,6 @@ * considering it was developed without i18n support under Windows */ #define DCCHARSET "windows-1252" -#ifdef DCPP_MASQUERADE -/* - * I honestly don't want to pretend being a client that I'm not, but - * there are so many hubs that simply do not accept any clients - * outside their whitelists, for no obvious reasons, so I feel that I - * am left with little choice. Anyhow, as long as I actually support - * all the features that my faked DC++ version does, there should be - * very little harm done. - */ -#define DCIDTAG "++" -#define DCIDTAGV "0.674" -#define DCIDFULL "DC++ 0.674" -#else -#define DCIDTAG "Dolda" -#define DCIDTAGV VERSION -#define DCIDFULL "DoldaConnect " VERSION -#endif - #define PEER_CMD 0 #define PEER_STOP 1 #define PEER_TRNS 2 @@ -3002,7 +2984,7 @@ static void hubread(struct socket *sk, struct fnetnode *fn) struct command *cmd; char *newbuf; size_t datalen, cnlen; - char *p; + char *p, *p2; hub = (struct dchub *)fn->data; if((newbuf = sockgetinbuf(sk, &datalen)) == NULL) @@ -3012,23 +2994,22 @@ static void hubread(struct socket *sk, struct fnetnode *fn) sizebuf2(hub->inbuf, hub->inbufdata + datalen, 1); memcpy(hub->inbuf + hub->inbufdata, newbuf, datalen); free(newbuf); - p = hub->inbuf + hub->inbufdata; + p = hub->inbuf; hub->inbufdata += datalen; - while((datalen > 0) && ((p = memchr(p, '|', datalen)) != NULL)) + while((p - hub->inbuf < hub->inbufdata) && ((p2 = memchr(p, '|', hub->inbufdata - (p - hub->inbuf))) != NULL)) { - *(p++) = 0; + *(p2++) = 0; for(cmd = hubcmds; cmd->handler != NULL; cmd++) { cnlen = strlen(cmd->name); - if(!strncmp(hub->inbuf, cmd->name, cnlen) && ((hub->inbuf[cnlen] == ' ') || (hub->inbuf[cnlen] == 0))) + if(!strncmp(p, cmd->name, cnlen) && ((p[cnlen] == ' ') || (p[cnlen] == 0))) break; } if((cmd->limit == 0) || (hub->queue.size < cmd->limit)) - newqcmd(&hub->queue, hub->inbuf); - memmove(hub->inbuf, p, hub->inbufdata -= p - hub->inbuf); - datalen = hub->inbufdata; - p = hub->inbuf; + newqcmd(&hub->queue, p); + p = p2; } + memmove(hub->inbuf, p, hub->inbufdata -= p - hub->inbuf); if(hub->queue.size > 1000) sk->ignread = 1; } @@ -3140,7 +3121,6 @@ static void freedcpeer(struct dcpeer *peer) peer->transfer->close = 1; if(peer->transfer->dir == TRNSD_DOWN) resettransfer(peer->transfer); - transferdetach(peer->transfer); } if(peer->timeout != NULL) canceltimer(peer->timeout); @@ -3222,15 +3202,6 @@ static void hubkill(struct fnetnode *fn) hub->sk->close = 1; } -static wchar_t *dcbasename(wchar_t *filename) -{ - wchar_t *ret; - - if((ret = wcsrchr(filename, L'/')) != NULL) - return(ret + 1); - return(filename); -} - static struct transferiface dctransfer = { .detach = (void (*)(struct transfer *, void *))dctransdetach, @@ -3249,7 +3220,6 @@ static struct fnet dcnet = .reqconn = hubreqconn, .sendchat = hubsendchat, .search = hubsearch, - .filebasename = dcbasename }; static void peerread(struct socket *sk, struct dcpeer *peer)