diff options
| author | 2022-08-10 22:04:19 +0100 | |
|---|---|---|
| committer | 2022-08-10 22:04:19 +0100 | |
| commit | 2dc07dbc067b5f88b8172622fb98b63ba9468380 (patch) | |
| tree | 2090a3caad1fa0768637446b0e7bc8ba913febd0 /src/modules/m_spanningtree/uid.cpp | |
| parent | Merge branch 'insp3' into master. (diff) | |
| parent | Deprecate the string variant of SetClientIP. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_spanningtree/uid.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/uid.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/modules/m_spanningtree/uid.cpp b/src/modules/m_spanningtree/uid.cpp index 7cf345dfd..e83528137 100644 --- a/src/modules/m_spanningtree/uid.cpp +++ b/src/modules/m_spanningtree/uid.cpp @@ -70,6 +70,14 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params } } + irc::sockets::sockaddrs sa; + if (params[6].find('/') != std::string::npos) + irc::sockets::untosa(params[6], sa); + else + irc::sockets::aptosa(params[6], 0, sa); + if (sa.family() == AF_UNSPEC) + throw ProtocolException("Invalid IP address or UNIX socket path"); + /* For remote users, we pass the UUID they sent to the constructor. * If the UUID already exists User::User() throws an exception which causes this connection to be closed. */ @@ -79,13 +87,13 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params _new->ChangeRealHost(params[3], false); _new->ChangeDisplayedHost(params[4]); _new->ident = params[5]; + _new->SetClientIP(sa); _new->ChangeRealName(params.back()); _new->registered = REG_ALL; _new->signon = signon; _new->age = age_ts; - unsigned int paramptr = 9; - + size_t paramptr = 9; for (const auto& modechr : modestr) { // Accept more '+' chars, for now @@ -122,8 +130,6 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params _new->SetMode(mh, true); } - _new->SetClientIP(params[6]); - ServerInstance->Users.AddClone(_new); remoteserver->UserCount++; |
