X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ffilenet.c;h=417f6b8d43cf648c2a2e56e063ccfb29b2bc47a0;hb=547717748489192c66eefedfff7a031010faefce;hp=9e32daee32732386f9fb7d4db6bf9b4e1fdad3f9;hpb=d9c95ea0c97dab3b4a11dad6e369d244bd99ebc2;p=doldaconnect.git diff --git a/daemon/filenet.c b/daemon/filenet.c index 9e32dae..417f6b8 100644 --- a/daemon/filenet.c +++ b/daemon/filenet.c @@ -106,6 +106,8 @@ void putfnetnode(struct fnetnode *fn) CBCHAINFREE(fn, fnetpeer_chdi); if(fn->fnet->destroy != NULL) fn->fnet->destroy(fn); + while(fn->args != NULL) + freewcspair(fn->args, &fn->args); while(fn->peers != NULL) fnetdelpeer(fn->peers); if(fn->mynick != NULL) @@ -243,7 +245,7 @@ void fnetpeersetstr(struct fnetpeer *peer, wchar_t *id, wchar_t *value) datum = adddatum(peer->fn, id, FNPD_STR); di = difindoradd(peer, datum, &changed); if(di->data.str != NULL) { - changed = (changed || !wcscmp(value, di->data.str)); + changed = (changed || wcscmp(value, di->data.str)); free(di->data.str); } else { changed = 1; @@ -437,10 +439,11 @@ struct fnet *findfnet(wchar_t *name) return(fnet); } -struct fnetnode *fnetinitconnect(wchar_t *name, char *addr) +struct fnetnode *fnetinitconnect(wchar_t *name, char *addr, struct wcspair *args) { struct fnet *fnet; struct fnetnode *fn; + struct wcspair *arg; if((fnet = findfnet(name)) == NULL) { @@ -448,6 +451,12 @@ struct fnetnode *fnetinitconnect(wchar_t *name, char *addr) return(NULL); } fn = newfn(fnet); + fn->args = args; + for(arg = fn->args; arg != NULL; arg = arg->next) + { + if(!wcscmp(arg->key, L"nick")) + fnetsetnick(fn, arg->val); + } getfnetnode(fn); if(netresolve(addr, (void (*)(struct sockaddr *, int, void *))resolvecb, fn) < 0) return(NULL);