diff mcabber/libjabber/socket.c @ 417:c3ae9251c197

Sync libjabber with upstream Sync with jabberd-1.4.4.
author Mikael Berthe <mikael@lilotux.net>
date Thu, 01 Sep 2005 23:29:21 +0200
parents bf3d6e241714
children 5f43b532cc37
line wrap: on
line diff
--- a/mcabber/libjabber/socket.c	Thu Sep 01 21:18:19 2005 +0200
+++ b/mcabber/libjabber/socket.c	Thu Sep 01 23:29:21 2005 +0200
@@ -13,21 +13,40 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  Jabber
- *  Copyright (C) 1998-1999 The Jabber Team http://jabber.org/
+ * Copyrights
+ *
+ * Portions created by or assigned to Jabber.com, Inc. are
+ * Copyright (c) 1999-2002 Jabber.com, Inc.  All Rights Reserved.  Contact
+ * information for Jabber.com, Inc. is available at http://www.jabber.com/.
+ *
+ * Portions Copyright (c) 1998-1999 Jeremie Miller.
+ *
+ * Acknowledgements
+ *
+ * Special thanks to the Jabber Open Source Contributors for their
+ * suggestions and support of Jabber.
+ *
+ */
+
+/**
+ * @file socket.c
+ * @brief some misc functions to handle sockets
  */
 
 #include "libxode.h"
 #include "connwrap.h"
 
-/* socket.c
- *
+/**
  * Simple wrapper to make socket creation easy.
- * type = NETSOCKET_SERVER is local listening socket
- * type = NETSOCKET_CLIENT is connection socket
- * type = NETSOCKET_UDP
+ *
+ * @param port port number of the socket
+ * @param host hostname where to connect to or listen on
+ * @param type type of socket (NETSOCKET_SERVER, NETSOCKET_CLIENT; or NETSOCKET_UDP)
+ * @return file handle of the new socket
+ *
+ * NETSOCKET_SERVER is local listening socket
+ * NETSOCKET_CLIENT is connection socket
  */
-
 int make_netsocket(u_short port, char *host, int type, int ssl)
 {
     int s, flag = 1;
@@ -41,53 +60,53 @@
     bzero((void *)&sa,sizeof(struct sockaddr_in));
 
     if((s = socket(AF_INET,socket_type,0)) < 0)
-	return(-1);
+        return(-1);
     if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&flag, sizeof(flag)) < 0)
-	return(-1);
+        return(-1);
 
     saddr = make_addr(host);
     if(saddr == NULL)
-	return(-1);
+        return(-1);
     sa.sin_family = AF_INET;
     sa.sin_port = htons(port);
 
     if(type == NETSOCKET_SERVER)
     {
-	/* bind to specific address if specified */
-	if(host != NULL)
-	    sa.sin_addr.s_addr = saddr->s_addr;
+        /* bind to specific address if specified */
+        if(host != NULL)
+            sa.sin_addr.s_addr = saddr->s_addr;
 
-	if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
+        {
+            close(s);
+            return(-1);
+        }
     }
     if(type == NETSOCKET_CLIENT)
     {
-	sa.sin_addr.s_addr = saddr->s_addr;
-	if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        sa.sin_addr.s_addr = saddr->s_addr;
+        if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
+        {
+            close(s);
+            return(-1);
+        }
     }
     if(type == NETSOCKET_UDP)
     {
-	/* bind to all addresses for now */
-	if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        /* bind to all addresses for now */
+        if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
+        {
+            close(s);
+            return(-1);
+        }
 
-	/* specify default recipient for read/write */
-	sa.sin_addr.s_addr = saddr->s_addr;
-	if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        /* specify default recipient for read/write */
+        sa.sin_addr.s_addr = saddr->s_addr;
+        if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
+        {
+            close(s);
+            return(-1);
+        }
     }
 
 
@@ -131,56 +150,56 @@
     bzero((void *)&sa,sizeof(struct sockaddr_in));
 
     if((s = socket(AF_INET,socket_type,0)) < 0)
-	return(-1);
+        return(-1);
     if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&flag, sizeof(flag)) < 0)
-	return(-1);
+        return(-1);
     change_socket_to_nonblocking(s);
 
     saddr = make_addr(host);
     if(saddr == NULL)
-	return(-1);
+        return(-1);
     sa.sin_family = AF_INET;
     sa.sin_port = htons(port);
 
     if(type == NETSOCKET_SERVER)
     {
-	/* bind to specific address if specified */
-	if(host != NULL)
-	    sa.sin_addr.s_addr = saddr->s_addr;
+        /* bind to specific address if specified */
+        if(host != NULL)
+            sa.sin_addr.s_addr = saddr->s_addr;
 
-	if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
+        {
+            close(s);
+            return(-1);
+        }
     }
     if(type == NETSOCKET_CLIENT)
     {
-	int rc;
-	sa.sin_addr.s_addr = saddr->s_addr;
-	rc = cw_nb_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl, state);
-	if (rc == -1 )
-	{
-	    close(s);
-	    return(-1);
-	}
+        int rc;
+        sa.sin_addr.s_addr = saddr->s_addr;
+        rc = cw_nb_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl, state);
+        if (rc == -1 )
+        {
+            close(s);
+            return(-1);
+        }
     }
     if(type == NETSOCKET_UDP)
     {
-	/* bind to all addresses for now */
-	if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        /* bind to all addresses for now */
+        if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
+        {
+            close(s);
+            return(-1);
+        }
 
-	/* specify default recipient for read/write */
-	sa.sin_addr.s_addr = saddr->s_addr;
-	if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
-	{
-	    close(s);
-	    return(-1);
-	}
+        /* specify default recipient for read/write */
+        sa.sin_addr.s_addr = saddr->s_addr;
+        if(cw_connect(s,(struct sockaddr*)&sa,sizeof sa,ssl) < 0)
+        {
+            close(s);
+            return(-1);
+        }
     }
 
 
@@ -193,32 +212,32 @@
     static struct in_addr addr;
     char myname[MAXHOSTNAMELEN + 1];
 
-    if(host == NULL || strlen(host) == 0)
-    {
-	gethostname(myname,MAXHOSTNAMELEN);
-	hp = gethostbyname(myname);
-	if(hp != NULL)
-	{
-	    return (struct in_addr *) *hp->h_addr_list;
-	}
-    }else{
-	addr.s_addr = inet_addr(host);
-	if(addr.s_addr != -1)
-	{
-	    return &addr;
-	}
-	hp = gethostbyname(host);
-	if(hp != NULL)
-	{
-	    return (struct in_addr *) *hp->h_addr_list;
-	}
+    if (host == NULL || strlen(host) == 0) {
+        gethostname(myname,MAXHOSTNAMELEN);
+        hp = gethostbyname(myname);
+        if(hp != NULL) {
+            return (struct in_addr *) *hp->h_addr_list;
+        }
+    } else {
+        addr.s_addr = inet_addr(host);
+        if(addr.s_addr != -1) {
+            return &addr;
+        }
+        hp = gethostbyname(host);
+        if(hp != NULL) {
+            return (struct in_addr *) *hp->h_addr_list;
+        }
     }
     return NULL;
 }
 
-/* Sets a file descriptor to close on exec.  "flag" is 1 to close on exec, 0 to
- * leave open across exec.
- * -- EJB 7/31/2000
+/**
+ * Sets a file descriptor to close on exec.
+ *
+ * @param fd the file descriptor
+ * @param flag 1 to close on exec, 0 to leave open across exec
+ *
+ * @deprecated this function is not used by jabberd14 and might be removed in future versions
  */
 int set_fd_close_on_exec(int fd, int flag)
 {
@@ -226,12 +245,12 @@
     int newflags;
 
     if(flag)
-	newflags = oldflags | FD_CLOEXEC;
+        newflags = oldflags | FD_CLOEXEC;
     else
-	newflags = oldflags & (~FD_CLOEXEC);
+        newflags = oldflags & (~FD_CLOEXEC);
 
     if(newflags==oldflags)
-	return 0;
+        return 0;
     return fcntl(fd,F_SETFL,(long)newflags);
 }