ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/s_user.c
(Generate patch)

Comparing ircd-hybrid/trunk/src/s_user.c (file contents):
Revision 2138 by michael, Wed May 29 21:14:02 2013 UTC vs.
Revision 2143 by michael, Thu May 30 01:12:38 2013 UTC

# Line 1055 | Line 1055 | send_umode_out(struct Client *client_p,
1055   void
1056   user_set_hostmask(struct Client *target_p, const char *hostname, const int what)
1057   {
1058 +  dlink_node *ptr = NULL;
1059 +
1060 +  sendto_common_channels_local(target_p, 0, 0, ":%s!%s@%s QUIT :Changing hostname",
1061 +                               target_p->name, target_p->username, target_p->host);
1062 +
1063    if (IsUserHostIp(target_p))
1064      delete_user_host(target_p->username, target_p->host, !MyConnect(target_p));
1065  
# Line 1072 | Line 1077 | user_set_hostmask(struct Client *target_
1077      case MODE_DEL:
1078        DelUMode(target_p, UMODE_HIDDENHOST);
1079  
1080 <      if (!HasFlag(target_p, FLAGS_AUTH_SPOOF));
1080 >      if (!HasFlag(target_p, FLAGS_AUTH_SPOOF))
1081          DelFlag(target_p, FLAGS_IP_SPOOFING);
1082        break;
1083      default: break;
# Line 1085 | Line 1090 | user_set_hostmask(struct Client *target_
1090                 target_p->host);
1091      clear_ban_cache_client(target_p);
1092    }
1093 +
1094 +  DLINK_FOREACH(ptr, target_p->channel.head)
1095 +  {
1096 +    char modebuf[4], nickbuf[NICKLEN * 3 + 3] = { '\0' };
1097 +    char *p = modebuf;
1098 +    int len = 0;
1099 +    const struct Membership *ms = ptr->data;
1100 +
1101 +    if (has_member_flags(ms, CHFL_CHANOP)) {
1102 +      *p++ = 'o';
1103 +      len += snprintf(nickbuf + len, sizeof(nickbuf) - len, len ? " %s" : "%s", target_p->name);
1104 +    }
1105 +
1106 +    if (has_member_flags(ms, CHFL_HALFOP)) {
1107 +      *p++ = 'h';
1108 +      len += snprintf(nickbuf + len, sizeof(nickbuf) - len, len ? " %s" : "%s", target_p->name);
1109 +    }
1110 +
1111 +    if (has_member_flags(ms, CHFL_VOICE)) {
1112 +      *p++ = 'v';
1113 +      len += snprintf(nickbuf + len, sizeof(nickbuf) - len, len ? " %s" : "%s", target_p->name);
1114 +    }
1115 +
1116 +    *p = '\0';
1117 +
1118 +    sendto_channel_local_butone(target_p, 0, 0, ms->chptr, ":%s!%s@%s JOIN :%s",
1119 +                                target_p->name, target_p->username, target_p->host,
1120 +                                ms->chptr->chname);
1121 +    if (nickbuf[0])
1122 +      sendto_channel_local_butone(target_p, 0, 0, ms->chptr, ":%s MODE %s +%s %s",
1123 +                                  target_p->servptr->name, ms->chptr->chname,
1124 +                                  modebuf, nickbuf);
1125 +
1126 +  }
1127 +
1128 +  if (target_p->away[0])
1129 +    sendto_common_channels_local(target_p, 0, CAP_AWAY_NOTIFY,
1130 +                                 ":%s!%s@%s AWAY :%s",
1131 +                                 target_p->name, target_p->username,
1132 +                                 target_p->host, target_p->away);
1133   }
1134  
1135   /* user_welcome()

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)