Switch back to checking for server by nick with '.'
This fixes a bug where if you send a private message before joining any channels, your message will be routed to the <network> window. That happens because without a JOIN, self.user remains unset, which means that require will copy self.nick (set by echoMessage) to self.host. The easiest solution is to go back to checking for '.' and add a '.' to the default nick, so now if a server sends a NOTICE with no origin it will look like -*.*- which is kinda cute.master
parent
b2de129e3f
commit
2b8a45779d
4
handle.c
4
handle.c
|
@ -76,7 +76,7 @@ static const char *capList(enum Cap caps) {
|
||||||
|
|
||||||
static void require(struct Message *msg, bool origin, uint len) {
|
static void require(struct Message *msg, bool origin, uint len) {
|
||||||
if (origin) {
|
if (origin) {
|
||||||
if (!msg->nick) msg->nick = "*";
|
if (!msg->nick) msg->nick = "*.*";
|
||||||
if (!msg->user) msg->user = msg->nick;
|
if (!msg->user) msg->user = msg->nick;
|
||||||
if (!msg->host) msg->host = msg->user;
|
if (!msg->host) msg->host = msg->user;
|
||||||
}
|
}
|
||||||
|
@ -1114,7 +1114,7 @@ static const char *colorMentions(uint id, struct Message *msg) {
|
||||||
static void handlePrivmsg(struct Message *msg) {
|
static void handlePrivmsg(struct Message *msg) {
|
||||||
require(msg, true, 2);
|
require(msg, true, 2);
|
||||||
bool query = !strchr(network.chanTypes, msg->params[0][0]);
|
bool query = !strchr(network.chanTypes, msg->params[0][0]);
|
||||||
bool server = (msg->host == msg->nick);
|
bool server = strchr(msg->nick, '.');
|
||||||
bool mine = !strcmp(msg->nick, self.nick);
|
bool mine = !strcmp(msg->nick, self.nick);
|
||||||
uint id;
|
uint id;
|
||||||
if (query && server) {
|
if (query && server) {
|
||||||
|
|
Loading…
Reference in New Issue