*p2 = 0;
if((buf = icmbstowcs(p, DCCHARSET)) == NULL)
return;
- if((wcslen(buf) > 0) && (buf[wcslen(buf) - 1] == L'>') && ((wp = wcschr(buf, L'<')) != NULL))
+ if((wcslen(buf) > 0) && (buf[wcslen(buf) - 1] == L'>') && ((wp = wcsrchr(buf, L'<')) != NULL))
{
buf[wcslen(buf) - 1] = L'\0';
*(wp++) = L'\0';
char *buf, *p, *p2, *hashbuf;
size_t buflen, hashlen;
char *nick, *filename, *hubname;
+ struct sockaddr_in hubaddr;
int size, slots;
struct fnetnode *fn, *myfn;
struct dchub *hub;
return;
}
*p2 = 0;
+ p = p2 + 2;
+ if((p2 = strchr(p, ':')) == NULL)
+ {
+ free(buf);
+ return;
+ }
+ *(p2++) = 0;
+ hubaddr.sin_family = AF_INET;
+ if(!inet_aton(p, &hubaddr.sin_addr))
+ {
+ free(buf);
+ return;
+ }
+ p = p2;
+ if((p2 = strchr(p, ')')) == NULL)
+ {
+ free(buf);
+ return;
+ }
+ *p2 = 0;
+ hubaddr.sin_port = htons(atoi(p));
if((wnick = icmbstowcs(nick, DCCHARSET)) == NULL)
{
free(buf);
}
}
}
+ if(myfn == NULL)
+ {
+ for(fn = fnetnodes; fn != NULL; fn = fn->next)
+ {
+ if((fn->fnet == &dcnet) && (fn->sk != NULL) && addreq(fn->sk->remote, (struct sockaddr *)&hubaddr))
+ {
+ myfn = fn;
+ break;
+ }
+ }
+ }
sr = newsrchres(&dcnet, wfile, wnick);
if(sr->peernick != NULL)
free(sr->peernick);