diff options
| author | Nakidai <nakidai@disroot.org> | 2026-02-13 00:58:28 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2026-02-13 00:58:28 +0300 |
| commit | af86909202cd4fba0417a27b03f9df00342fcfbd (patch) | |
| tree | 6c36eb5cefe6784b01da7eefad771b3fe4ad5cc4 | |
| parent | d493c4a9b9bb1db0da7418a0a2797c5f2b3d34ff (diff) | |
| download | libreircd-af86909202cd4fba0417a27b03f9df00342fcfbd.tar.gz libreircd-af86909202cd4fba0417a27b03f9df00342fcfbd.zip | |
Add sending topic on join
When user joins, it should get topic message
| -rw-r--r-- | handle.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/handle.c b/handle.c index 0be87a3..2fb54f0 100644 --- a/handle.c +++ b/handle.c @@ -28,11 +28,12 @@ static struct Oper opers[OPERS_MAX]; size_t opers_c; static int names(struct Message *msg, struct Peer *peer); +static int topic(struct Message *msg, struct Peer *peer); static int join(struct Message *msg, struct Peer *peer) { - struct Message namesmsg; + struct Message joinmsg; size_t i; char *cp; @@ -52,16 +53,21 @@ join(struct Message *msg, struct Peer *peer) for (i = 0; i < peer->channels_c; ++i) ensure(strcmp(channels[i].name, msg->params[0]), (void)0, 0); - namesmsg = (struct Message){ .params = { msg->params[0] } }; + joinmsg = (struct Message){ .params = { msg->params[0] } }; for (i = 0; i < channels_c; ++i) { if (strcmp(channels[i].name, msg->params[0])) continue; if (channel_join(&channels[i], peer)) + { reply(peer, 471); + } else - names(&namesmsg, peer); + { + topic(&joinmsg, peer); + names(&joinmsg, peer); + } return 0; } @@ -69,7 +75,8 @@ join(struct Message *msg, struct Peer *peer) strlcpy(channels[channels_c].name, msg->params[0], sizeof(channels->name)); channel_join(&channels[channels_c], peer); channels[channels_c++].peers[0].modes |= CHANNEL_OPER; - names(&namesmsg, peer); + topic(&joinmsg, peer); + names(&joinmsg, peer); return 0; } |