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

Comparing ircd-hybrid/trunk/src/s_bsd.c (file contents):
Revision 2881 by michael, Mon Jan 20 17:15:39 2014 UTC vs.
Revision 2916 by michael, Sat Jan 25 21:09:18 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3 < *  s_bsd.c: Network functions.
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 18 | Line 17
17   *  along with this program; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
19   *  USA
20 < *
21 < *  $Id$
20 > */
21 >
22 > /*! \file s_bsd.c
23 > * \brief Network functions.
24 > * \version $Id$
25   */
26  
27   #include "stdinc.h"
# Line 104 | Line 106 | get_sockerr(int fd)
106   }
107  
108   /*
109 < * report_error - report an error from an errno.
109 > * report_error - report an error from an errno.
110   * Record error to log and also send a copy to all *LOCAL* opers online.
111   *
112   *        text        is a *format* string for outputing error. It must
# Line 118 | Line 120 | get_sockerr(int fd)
120   * Cannot use perror() within daemon. stderr is closed in
121   * ircd and cannot be used. And, worse yet, it might have
122   * been reassigned to a normal connection...
123 < *
123 > *
124   * Actually stderr is still there IFF ircd was run with -s --Rodder
125   */
126  
127   void
128 < report_error(int level, const char* text, const char* who, int error)
128 > report_error(int level, const char* text, const char* who, int error)
129   {
130    who = (who) ? who : "";
131  
# Line 219 | Line 221 | close_connection(struct Client *client_p
221  
222    dbuf_clear(&client_p->localClient->buf_sendq);
223    dbuf_clear(&client_p->localClient->buf_recvq);
224 <  
224 >
225    MyFree(client_p->localClient->passwd);
226    detach_conf(client_p, CONF_CLIENT|CONF_OPER|CONF_SERVER);
227    client_p->from = NULL; /* ...this should catch them! >:) --msa */
# Line 248 | Line 250 | ssl_handshake(int fd, struct Client *cli
250      {
251        case SSL_ERROR_WANT_WRITE:
252          comm_setselect(&client_p->localClient->fd, COMM_SELECT_WRITE,
253 <                       (PF *) ssl_handshake, client_p, 30);
253 >                       (PF *)ssl_handshake, client_p, 30);
254          return;
255  
256        case SSL_ERROR_WANT_READ:
257          comm_setselect(&client_p->localClient->fd, COMM_SELECT_READ,
258 <                       (PF *) ssl_handshake, client_p, 30);
258 >                       (PF *)ssl_handshake, client_p, 30);
259          return;
260  
261        default:
262          exit_client(client_p, client_p, "Error during SSL handshake");
263 <        return;
263 >        return;
264      }
265    }
266  
# Line 294 | Line 296 | ssl_handshake(int fd, struct Client *cli
296   #endif
297  
298   /*
299 < * add_connection - creates a client which has just connected to us on
299 > * add_connection - creates a client which has just connected to us on
300   * the given fd. The sockhost field is initialized with the ip# of the host.
301   * An unique id is calculated now, in case it is needed for auth.
302   * The client is sent to the auth module for verification, and not put in
# Line 307 | Line 309 | add_connection(struct Listener *listener
309  
310    fd_open(&new_client->localClient->fd, fd, 1,
311            (listener->flags & LISTENER_SSL) ?
312 <          "Incoming SSL connection" : "Incoming connection");
312 >          "Incoming SSL connection" : "Incoming connection");
313  
314    /*
315     * copy address to 'sockhost' as a string, copy it to host too
# Line 316 | Line 318 | add_connection(struct Listener *listener
318    memcpy(&new_client->localClient->ip, irn, sizeof(struct irc_ssaddr));
319  
320    getnameinfo((struct sockaddr *)&new_client->localClient->ip,
321 <              new_client->localClient->ip.ss_len, new_client->sockhost,
321 >              new_client->localClient->ip.ss_len, new_client->sockhost,
322                sizeof(new_client->sockhost), NULL, 0, NI_NUMERICHOST);
323    new_client->localClient->aftype = new_client->localClient->ip.ss.ss_family;
324  
# Line 416 | Line 418 | comm_settimeout(fde_t *fd, time_t timeou
418   * flush functions, and when comm_close() is implemented correctly
419   * with close functions, we _actually_ don't call comm_close() here ..
420   * -- originally Adrian's notes
421 < * comm_close() is replaced with fd_close() in fdlist.c
421 > * comm_close() is replaced with fd_close() in fdlist.c
422   */
423   void
424   comm_setflush(fde_t *fd, time_t timeout, PF *callback, void *cbdata)
# Line 508 | Line 510 | comm_connect_tcp(fde_t *fd, const char *
510     *   -- adrian
511     */
512    if ((clocal != NULL) && (bind(fd->fd, clocal, socklen) < 0))
513 <  {
513 >  {
514      /* Failure, call the callback with COMM_ERR_BIND */
515      comm_connect_callback(fd, COMM_ERR_BIND);
516      /* ... and quit */
# Line 605 | Line 607 | comm_connect_dns_callback(void *vptr, co
607    /* Copy over the DNS reply info so we can use it in the connect() */
608    /*
609     * Note we don't fudge the refcount here, because we aren't keeping
610 <   * the DNS record around, and the DNS cache is gone anyway..
610 >   * the DNS record around, and the DNS cache is gone anyway..
611     *     -- adrian
612     */
613    memcpy(&F->connect.hostaddr, addr, addr->ss_len);
# Line 636 | Line 638 | comm_connect_tryconnect(fde_t *fd, void
638      return;
639  
640    /* Try the connect() */
641 <  retval = connect(fd->fd, (struct sockaddr *) &fd->connect.hostaddr,
641 >  retval = connect(fd->fd, (struct sockaddr *) &fd->connect.hostaddr,
642      fd->connect.hostaddr.ss_len);
643  
644    /* Error? */
# Line 749 | Line 751 | comm_accept(struct Listener *lptr, struc
751    return newfd;
752   }
753  
754 < /*
754 > /*
755   * remove_ipv6_mapping() - Removes IPv4-In-IPv6 mapping from an address
756   * OSes with IPv6 mapping listening on both
757   * AF_INET and AF_INET6 map AF_INET connections inside AF_INET6 structures
758 < *
758 > *
759   */
760   #ifdef IPV6
761   void
# Line 763 | Line 765 | remove_ipv6_mapping(struct irc_ssaddr *a
765    {
766      if (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)addr)->sin6_addr))
767      {
768 <      struct sockaddr_in6 v6;
768 >      struct sockaddr_in6 v6;
769        struct sockaddr_in *v4 = (struct sockaddr_in *)addr;
770  
771        memcpy(&v6, addr, sizeof(v6));
# Line 773 | Line 775 | remove_ipv6_mapping(struct irc_ssaddr *a
775        addr->ss.ss_family = AF_INET;
776        addr->ss_len = sizeof(struct sockaddr_in);
777      }
778 <    else
778 >    else
779        addr->ss_len = sizeof(struct sockaddr_in6);
780    }
781    else
782      addr->ss_len = sizeof(struct sockaddr_in);
783 < }
783 > }
784   #endif

Diff Legend

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