Mercurial > pidgin
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); |