1545 |
|
send_tb(struct Client *client_p, struct Channel *chptr) |
1546 |
|
{ |
1547 |
|
/* |
1548 |
< |
* XXX - Logic here isn't right either. What if the topic got unset? |
1549 |
< |
* We would need to send an empty TOPIC to reset the topic from the |
1550 |
< |
* other side |
1548 |
> |
* We may also send an empty topic here, but only if topic_time isn't 0, |
1549 |
> |
* i.e. if we had a topic that got unset. This is required for syncing |
1550 |
> |
* topics properly. |
1551 |
> |
* |
1552 |
> |
* Imagine the following scenario: Our downlink introduces a channel |
1553 |
> |
* to us with a TS that is equal to ours, but the channel topic on |
1554 |
> |
* their side got unset while the servers were in splitmode, which means |
1555 |
> |
* their 'topic' is newer. They simply wanted to unset it, so we have to |
1556 |
> |
* deal with it in a more sophisticated fashion instead of just resetting |
1557 |
> |
* it to their old topic they had before. Read m_tburst.c:ms_tburst |
1558 |
> |
* for further information -Michael |
1559 |
|
*/ |
1560 |
< |
if (chptr->topic != NULL) |
1560 |
> |
if (chptr->topic_time != 0) |
1561 |
|
{ |
1562 |
|
if (IsCapable(client_p, CAP_TBURST)) |
1563 |
|
sendto_one(client_p, ":%s TBURST %lu %s %lu %s :%s", |
1564 |
|
me.name, (unsigned long)chptr->channelts, chptr->chname, |
1565 |
< |
(unsigned long)chptr->topic_time, chptr->topic_info, |
1566 |
< |
chptr->topic); |
1565 |
> |
(unsigned long)chptr->topic_time, |
1566 |
> |
chptr->topic_info ? chptr->topic_info : "", |
1567 |
> |
chptr->topic ? chptr->topic : ""); |
1568 |
|
else if (IsCapable(client_p, CAP_TB)) |
1569 |
|
{ |
1570 |
|
if (ConfigChannel.burst_topicwho) |
1572 |
|
sendto_one(client_p, ":%s TB %s %lu %s :%s", |
1573 |
|
me.name, chptr->chname, |
1574 |
|
(unsigned long)chptr->topic_time, |
1575 |
< |
chptr->topic_info, chptr->topic); |
1575 |
> |
chptr->topic_info, chptr->topic ? chptr->topic : ""); |
1576 |
|
} |
1577 |
|
else |
1578 |
|
{ |
1579 |
|
sendto_one(client_p, ":%s TB %s %lu :%s", |
1580 |
|
me.name, chptr->chname, |
1581 |
< |
(unsigned long)chptr->topic_time, chptr->topic); |
1581 |
> |
(unsigned long)chptr->topic_time, |
1582 |
> |
chptr->topic ? chptr->topic : ""); |
1583 |
|
} |
1584 |
|
} |
1585 |
|
} |