comparison src/protocols/jabber/socket.c @ 3127:4e7cefc55971

[gaim-migrate @ 3142] Upgraded jabber to most recent stable version committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Thu, 04 Apr 2002 03:04:57 +0000
parents 424a40f12a6c
children 9682c0e022c6
comparison
equal deleted inserted replaced
3126:e883f604174e 3127:4e7cefc55971
1 /* 1 /* --------------------------------------------------------------------------
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 * 2 *
7 * This program is distributed in the hope that it will be useful, 3 * License
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 * 4 *
12 * You should have received a copy of the GNU General Public License 5 * The contents of this file are subject to the Jabber Open Source License
13 * along with this program; if not, write to the Free Software 6 * Version 1.0 (the "JOSL"). You may not copy or use this file, in either
14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 7 * source code or executable form, except in compliance with the JOSL. You
8 * may obtain a copy of the JOSL at http://www.jabber.org/ or at
9 * http://www.opensource.org/.
15 * 10 *
16 * Jabber 11 * Software distributed under the JOSL is distributed on an "AS IS" basis,
17 * Copyright (C) 1998-1999 The Jabber Team http://jabber.org/ 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the JOSL
18 */ 13 * for the specific language governing rights and limitations under the
14 * JOSL.
15 *
16 * Copyrights
17 *
18 * Portions created by or assigned to Jabber.com, Inc. are
19 * Copyright (c) 1999-2002 Jabber.com, Inc. All Rights Reserved. Contact
20 * information for Jabber.com, Inc. is available at http://www.jabber.com/.
21 *
22 * Portions Copyright (c) 1998-1999 Jeremie Miller.
23 *
24 * Acknowledgements
25 *
26 * Special thanks to the Jabber Open Source Contributors for their
27 * suggestions and support of Jabber.
28 *
29 * Alternatively, the contents of this file may be used under the terms of the
30 * GNU General Public License Version 2 or later (the "GPL"), in which case
31 * the provisions of the GPL are applicable instead of those above. If you
32 * wish to allow use of your version of this file only under the terms of the
33 * GPL and not to allow others to use your version of this file under the JOSL,
34 * indicate your decision by deleting the provisions above and replace them
35 * with the notice and other provisions required by the GPL. If you do not
36 * delete the provisions above, a recipient may use your version of this file
37 * under either the JOSL or the GPL.
38 *
39 *
40 * --------------------------------------------------------------------------*/
19 41
20 #include "libxode.h" 42 #include "lib.h"
21 43
22 /* socket.c 44 /* socket.c
23 * 45 *
24 * Simple wrapper to make socket creation easy. 46 * Simple wrapper to make socket creation easy.
25 * type = NETSOCKET_SERVER is local listening socket 47 * type = NETSOCKET_SERVER is local listening socket
26 * type = NETSOCKET_CLIENT is connection socket 48 * type = NETSOCKET_CLIENT is connection socket
27 * type = NETSOCKET_UDP 49 * type = NETSOCKET_UDP is a UDP connection socket
28 */ 50 */
29 51
30 int make_netsocket(u_short port, char *host, int type) 52 int make_netsocket(u_short port, char *host, int type)
31 { 53 {
32 int s, flag = 1; 54 int s, flag = 1;
43 return(-1); 65 return(-1);
44 if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&flag, sizeof(flag)) < 0) 66 if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&flag, sizeof(flag)) < 0)
45 return(-1); 67 return(-1);
46 68
47 saddr = make_addr(host); 69 saddr = make_addr(host);
48 if(saddr == NULL) 70 if(saddr == NULL && type != NETSOCKET_UDP)
49 return(-1); 71 return(-1);
50 sa.sin_family = AF_INET; 72 sa.sin_family = AF_INET;
51 sa.sin_port = htons(port); 73 sa.sin_port = htons(port);
52 74
53 if(type == NETSOCKET_SERVER) 75 if(type == NETSOCKET_SERVER)
78 { 100 {
79 close(s); 101 close(s);
80 return(-1); 102 return(-1);
81 } 103 }
82 104
83 /* specify default recipient for read/write */ 105 /* if specified, use a default recipient for read/write */
84 sa.sin_addr.s_addr = saddr->s_addr; 106 if(host != NULL && saddr != NULL)
85 if(connect(s,(struct sockaddr*)&sa,sizeof sa) < 0)
86 { 107 {
87 close(s); 108 sa.sin_addr.s_addr = saddr->s_addr;
88 return(-1); 109 if(connect(s,(struct sockaddr*)&sa,sizeof sa) < 0)
110 {
111 close(s);
112 return(-1);
113 }
89 } 114 }
90 } 115 }
91 116
92 117
93 return(s); 118 return(s);