| 1394 |
|
{ |
| 1395 |
|
int samenick = 0; |
| 1396 |
|
|
| 1397 |
+ |
assert(source_p->name[0] && !EmptyString(nick)); |
| 1398 |
+ |
|
| 1399 |
|
/* |
| 1400 |
< |
** Client just changing his/her nick. If he/she is |
| 1401 |
< |
** on a channel, send note of change to all clients |
| 1402 |
< |
** on that channel. Propagate notice to other servers. |
| 1403 |
< |
*/ |
| 1400 |
> |
* Client just changing his/her nick. If he/she is |
| 1401 |
> |
* on a channel, send note of change to all clients |
| 1402 |
> |
* on that channel. Propagate notice to other servers. |
| 1403 |
> |
*/ |
| 1404 |
|
if ((source_p->localClient->last_nick_change + |
| 1405 |
|
ConfigFileEntry.max_nick_time) < CurrentTime) |
| 1406 |
|
source_p->localClient->number_of_nick_changes = 0; |
| 1424 |
|
del_all_their_accepts(source_p); |
| 1425 |
|
source_p->tsinfo = CurrentTime; |
| 1426 |
|
clear_ban_cache_client(source_p); |
| 1427 |
+ |
watch_check_hash(source_p, RPL_LOGOFF); |
| 1428 |
|
} |
| 1429 |
|
|
| 1430 |
|
/* XXX - the format of this notice should eventually be changed |
| 1450 |
|
sendto_server(client_p, source_p, NULL, NOCAPS, CAP_TS6, NOFLAGS, |
| 1451 |
|
":%s NICK %s :%lu", |
| 1452 |
|
source_p->name, nick, (unsigned long)source_p->tsinfo); |
| 1453 |
+ |
|
| 1454 |
+ |
hash_del_client(source_p); |
| 1455 |
+ |
strcpy(source_p->name, nick); |
| 1456 |
+ |
hash_add_client(source_p); |
| 1457 |
+ |
|
| 1458 |
+ |
if (!samenick) |
| 1459 |
+ |
watch_check_hash(source_p, RPL_LOGON); |
| 1460 |
+ |
|
| 1461 |
+ |
/* fd_desc is long enough */ |
| 1462 |
+ |
fd_note(&client_p->localClient->fd, "Nick: %s", nick); |
| 1463 |
|
} |
| 1464 |
|
else |
| 1452 |
– |
{ |
| 1465 |
|
sendto_one(source_p, form_str(ERR_NICKTOOFAST), |
| 1466 |
|
me.name, source_p->name, source_p->name, |
| 1467 |
|
nick, ConfigFileEntry.max_nick_time); |
| 1456 |
– |
return; |
| 1457 |
– |
} |
| 1458 |
– |
|
| 1459 |
– |
/* Finally, add to hash */ |
| 1460 |
– |
if (source_p->name[0]) |
| 1461 |
– |
hash_del_client(source_p); |
| 1462 |
– |
|
| 1463 |
– |
if (!samenick) |
| 1464 |
– |
{ |
| 1465 |
– |
clear_ban_cache_client(source_p); |
| 1466 |
– |
watch_check_hash(source_p, RPL_LOGOFF); |
| 1467 |
– |
} |
| 1468 |
– |
|
| 1469 |
– |
strcpy(source_p->name, nick); |
| 1470 |
– |
hash_add_client(source_p); |
| 1471 |
– |
|
| 1472 |
– |
if (!samenick) |
| 1473 |
– |
watch_check_hash(source_p, RPL_LOGON); |
| 1474 |
– |
|
| 1475 |
– |
/* fd_desc is long enough */ |
| 1476 |
– |
fd_note(&client_p->localClient->fd, "Nick: %s", nick); |
| 1468 |
|
} |