if(!peer->found)
delpeer(peer);
}
- fn->trackpeers = 1;
} else if(resp->code == 201) {
while(fn->peers != NULL)
delpeer(fn->peers);
- fn->trackpeers = 1;
}
data->callback(fn, resp->code, data->data);
free(data);
}
break;
case 630:
- if(((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL) && fn->trackpeers)
+ if((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL)
{
if((peer = dc_fnetfindpeer(fn, ires->argv[1].val.str)) == NULL)
- addpeer(fn, ires->argv[1].val.str, ires->argv[2].val.str);
+ {
+ peer = addpeer(fn, ires->argv[1].val.str, ires->argv[2].val.str);
+ if(fn->newpeercb != NULL)
+ fn->newpeercb(peer);
+ }
}
break;
case 631:
- if(((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL) && fn->trackpeers)
+ if((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL)
{
if((peer = dc_fnetfindpeer(fn, ires->argv[1].val.str)) != NULL)
+ {
+ if(fn->delpeercb != NULL)
+ fn->delpeercb(peer);
delpeer(peer);
+ }
}
break;
case 632:
- if(((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL) && fn->trackpeers)
+ if((fn = dc_findfnetnode(ires->argv[0].val.num)) != NULL)
{
if((peer = dc_fnetfindpeer(fn, ires->argv[1].val.str)) != NULL)
{
free(peer->nick);
peer->nick = swcsdup(ires->argv[2].val.str);
}
- for(i = 3; i < resp->rlines[0].argc; i += 3)
+ for(i = 4; i < resp->rlines[0].argc; i += 3)
{
switch(wcstol(resp->rlines[0].argv[i + 1], NULL, 10))
{
break;
}
}
+ if(fn->chpeercb != NULL)
+ fn->chpeercb(peer);
}
}
break;