ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/modules/m_user.c
Revision: 126
Committed: Fri Oct 14 02:41:46 2005 UTC (20 years, 10 months ago) by db
Content type: text/x-csrc
File size: 2386 byte(s)
Log Message:
- attach/conf cleanup take 2
- Each client has now one AccessItem for its connect
  stored in localClient->iline
- The corresponding class is now stored in localClient->class

The ramifications of this move are, there is no conf list to traverse
to find the AccessItem, the class is instantly available from the localClient
struct without having to traverse the confs list and indirectly through the
aconf. This speeds up get_sendq etc. functions. As a bonus, at least
4 fewer bytes are used in the Client struct, since a dlink list is 4 words.
It does mean there is no longer a separate conf oper, which leads to the
kludge of patching the clients iline into an oper conf when
a client opers up. I don't think the oper flags are used after the client
is opered, so the patching operation may not be necessary.

- Server confs are stored in ->serv->sconf as before but attaching
  happens much earlier.
- server hub/leaf masks continues to be a dlink list but linked from
  the ->serv which is only allocated for servers.

- cleaned up some comments, added a comment, notably to check_server()
  which badly needed it.
- Pass ClassItem or AccessItem etc. in when it makes more sense than passing
  in struct ConfItem. This simplified and clarified rebuild_cidr_class()

And lo, there was a great rejoicing.


File Contents

# User Rev Content
1 adx 30 /*
2     * ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3     * m_user.c: Sends username information.
4     *
5     * Copyright (C) 2002 by the past and present ircd coders, and others.
6     *
7     * This program is free software; you can redistribute it and/or modify
8     * it under the terms of the GNU General Public License as published by
9     * the Free Software Foundation; either version 2 of the License, or
10     * (at your option) any later version.
11     *
12     * This program is distributed in the hope that it will be useful,
13     * but WITHOUT ANY WARRANTY; without even the implied warranty of
14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     * GNU General Public License for more details.
16     *
17     * You should have received a copy of the GNU General Public License
18     * along with this program; if not, write to the Free Software
19     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20     * USA
21     *
22 knight 31 * $Id$
23 adx 30 */
24    
25     #include "stdinc.h"
26     #include "handlers.h"
27     #include "client.h"
28     #include "ircd.h"
29     #include "numeric.h"
30 db 126 #include "s_conf.h"
31 adx 30 #include "s_user.h"
32     #include "send.h"
33     #include "s_conf.h"
34     #include "msg.h"
35     #include "parse.h"
36     #include "modules.h"
37    
38    
39     static void mr_user(struct Client*, struct Client*, int, char**);
40    
41     struct Message user_msgtab = {
42     "USER", 0, 0, 5, 0, MFLG_SLOW, 0L,
43     {mr_user, m_registered, m_ignore, m_ignore, m_registered, m_ignore}
44     };
45    
46     #ifndef STATIC_MODULES
47     void
48     _modinit(void)
49     {
50     mod_add_cmd(&user_msgtab);
51     }
52    
53     void
54     _moddeinit(void)
55     {
56     mod_del_cmd(&user_msgtab);
57     }
58    
59 knight 31 const char *_version = "$Revision$";
60 adx 30 #endif
61    
62     /*
63     ** mr_user
64     ** parv[0] = sender prefix
65     ** parv[1] = username (login name, account)
66     ** parv[2] = client host name (used only from other servers)
67     ** parv[3] = server host name (used only from other servers)
68     ** parv[4] = users real name info
69     */
70     static void
71     mr_user(struct Client *client_p, struct Client *source_p,
72     int parc, char *parv[])
73     {
74     char *p;
75    
76     if ((p = strchr(parv[1],'@')) != NULL)
77     *p = '\0';
78    
79     if (*parv[4] == '\0')
80     {
81     sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
82     me.name, EmptyString(parv[0]) ? "*" : parv[0], "USER");
83     return;
84     }
85    
86     do_local_user(parv[0], client_p, source_p,
87     parv[1], /* username */
88     parv[2], /* host */
89     parv[3], /* server */
90     parv[4] /* users real name */ );
91     }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision