Mon, 29 Sep 2003 20:31:20 +0000
[gaim-migrate @ 7587]
"core-ssl" != "ssl"
| 6703 | 1 | /** |
| 2 | * @file sslconn.c SSL API | |
| 3 | * @ingroup core | |
| 4 | * | |
| 5 | * gaim | |
| 6 | * | |
| 7 | * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
| 8 | * | |
| 9 | * This program is free software; you can redistribute it and/or modify | |
| 10 | * it under the terms of the GNU General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, | |
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 | * GNU General Public License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU General Public License | |
| 20 | * along with this program; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 22 | */ | |
| 23 | #include "internal.h" | |
| 24 | ||
| 25 | #include "debug.h" | |
| 26 | #include "sslconn.h" | |
| 27 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
28 | static gboolean _ssl_initialized = FALSE; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
29 | static GaimSslOps *_ssl_ops = NULL; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
30 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
31 | static gboolean |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
32 | ssl_init(void) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
33 | { |
|
7018
c441ecf99639
[gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents:
7016
diff
changeset
|
34 | GaimPlugin *plugin; |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
35 | GaimSslOps *ops = gaim_ssl_get_ops(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
36 | gboolean success = FALSE; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
37 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
38 | if (_ssl_initialized) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
39 | return FALSE; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
40 | |
|
7024
45d9d705e258
[gaim-migrate @ 7587]
Christian Hammond <chipx86@chipx86.com>
parents:
7018
diff
changeset
|
41 | plugin = gaim_plugins_find_with_id("core-ssl"); |
|
7018
c441ecf99639
[gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents:
7016
diff
changeset
|
42 | |
|
c441ecf99639
[gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents:
7016
diff
changeset
|
43 | if (plugin != NULL && !gaim_plugin_is_loaded(plugin)) |
|
c441ecf99639
[gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents:
7016
diff
changeset
|
44 | gaim_plugin_load(plugin); |
|
c441ecf99639
[gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents:
7016
diff
changeset
|
45 | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
46 | if (ops != NULL && ops->init != NULL) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
47 | success = ops->init(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
48 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
49 | _ssl_initialized = success; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
50 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
51 | return success; |
| 6703 | 52 | } |
| 53 | ||
| 54 | gboolean | |
| 55 | gaim_ssl_is_supported(void) | |
| 56 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
57 | #ifdef HAVE_SSL |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
58 | return (gaim_ssl_get_ops() != NULL); |
| 6703 | 59 | #else |
| 60 | return FALSE; | |
| 61 | #endif | |
| 62 | } | |
| 63 | ||
| 64 | GaimSslConnection * | |
| 65 | gaim_ssl_connect(GaimAccount *account, const char *host, int port, | |
| 66 | GaimSslInputFunction func, void *data) | |
| 67 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
68 | GaimSslConnection *gsc; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
69 | GaimSslOps *ops; |
| 6703 | 70 | int i; |
| 71 | ||
| 72 | g_return_val_if_fail(host != NULL, NULL); | |
| 73 | g_return_val_if_fail(port != 0 && port != -1, NULL); | |
| 74 | g_return_val_if_fail(func != NULL, NULL); | |
| 75 | g_return_val_if_fail(gaim_ssl_is_supported(), NULL); | |
| 76 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
77 | ops = gaim_ssl_get_ops(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
78 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
79 | g_return_val_if_fail(ops != NULL, NULL); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
80 | g_return_val_if_fail(ops->connect_cb != NULL, NULL); |
| 6703 | 81 | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
82 | if (!_ssl_initialized) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
83 | { |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
84 | if (!ssl_init()) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
85 | return NULL; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
86 | } |
| 6703 | 87 | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
88 | gsc = g_new0(GaimSslConnection, 1); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
89 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
90 | gsc->host = g_strdup(host); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
91 | gsc->port = port; |
| 6764 | 92 | gsc->connect_cb_data = data; |
| 93 | gsc->connect_cb = func; | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
94 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
95 | i = gaim_proxy_connect(account, host, port, ops->connect_cb, gsc); |
| 6703 | 96 | |
| 97 | if (i < 0) | |
| 98 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
99 | g_free(gsc->host); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
100 | g_free(gsc); |
| 6703 | 101 | |
| 102 | return NULL; | |
| 103 | } | |
| 104 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
105 | return (GaimSslConnection *)gsc; |
| 6703 | 106 | } |
| 107 | ||
| 6764 | 108 | static void |
| 109 | recv_cb(gpointer data, gint source, GaimInputCondition cond) | |
| 110 | { | |
| 111 | GaimSslConnection *gsc = data; | |
| 112 | ||
| 113 | gsc->recv_cb(gsc->recv_cb_data, gsc, cond); | |
| 114 | } | |
| 115 | ||
| 116 | void | |
| 117 | gaim_ssl_input_add(GaimSslConnection *gsc, GaimSslInputFunction func, void *data) | |
| 118 | { | |
| 119 | GaimSslOps *ops; | |
| 120 | ||
| 121 | g_return_if_fail(func != NULL); | |
| 122 | g_return_if_fail(gaim_ssl_is_supported()); | |
| 123 | ||
| 124 | ops = gaim_ssl_get_ops(); | |
| 125 | ||
| 126 | gsc->recv_cb_data = data; | |
| 127 | gsc->recv_cb = func; | |
| 128 | gsc->inpa = gaim_input_add(gsc->fd, GAIM_INPUT_READ, recv_cb, gsc); | |
| 129 | } | |
| 130 | ||
|
6762
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
131 | GaimSslConnection * |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
132 | gaim_ssl_connect_fd(GaimAccount *account, int fd, |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
133 | GaimSslInputFunction func, void *data) |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
134 | { |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
135 | GaimSslConnection *gsc; |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
136 | GaimSslOps *ops; |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
137 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
138 | g_return_val_if_fail(fd > 0, NULL); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
139 | g_return_val_if_fail(func != NULL, NULL); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
140 | g_return_val_if_fail(gaim_ssl_is_supported(), NULL); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
141 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
142 | ops = gaim_ssl_get_ops(); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
143 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
144 | g_return_val_if_fail(ops != NULL, NULL); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
145 | g_return_val_if_fail(ops->connect_cb != NULL, NULL); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
146 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
147 | if (!_ssl_initialized) |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
148 | { |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
149 | if (!ssl_init()) |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
150 | return NULL; |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
151 | } |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
152 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
153 | gsc = g_new0(GaimSslConnection, 1); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
154 | |
| 6764 | 155 | gsc->connect_cb_data = data; |
| 156 | gsc->connect_cb = func; | |
|
6762
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
157 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
158 | ops->connect_cb(gsc, fd, GAIM_INPUT_READ); |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
159 | |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
160 | return (GaimSslConnection *)gsc; |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
161 | } |
|
2349053f14aa
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6745
diff
changeset
|
162 | |
| 6703 | 163 | void |
| 164 | gaim_ssl_close(GaimSslConnection *gsc) | |
| 165 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
166 | GaimSslOps *ops; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
167 | |
| 6703 | 168 | g_return_if_fail(gsc != NULL); |
| 169 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
170 | ops = gaim_ssl_get_ops(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
171 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
172 | if (gsc->inpa) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
173 | gaim_input_remove(gsc->inpa); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
174 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
175 | if (ops != NULL && ops->close != NULL) |
|
6745
68569c0a6865
[gaim-migrate @ 7277]
Herman Bloggs <herman@bluedigits.com>
parents:
6738
diff
changeset
|
176 | (ops->close)(gsc); |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
177 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
178 | if (gsc->fd) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
179 | close(gsc->fd); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
180 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
181 | if (gsc->host != NULL) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
182 | g_free(gsc->host); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
183 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
184 | g_free(gsc); |
| 6703 | 185 | } |
| 186 | ||
| 187 | size_t | |
| 188 | gaim_ssl_read(GaimSslConnection *gsc, void *data, size_t len) | |
| 189 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
190 | GaimSslOps *ops; |
| 6703 | 191 | |
| 192 | g_return_val_if_fail(gsc != NULL, 0); | |
| 193 | g_return_val_if_fail(data != NULL, 0); | |
| 194 | g_return_val_if_fail(len > 0, 0); | |
| 195 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
196 | ops = gaim_ssl_get_ops(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
197 | |
|
6745
68569c0a6865
[gaim-migrate @ 7277]
Herman Bloggs <herman@bluedigits.com>
parents:
6738
diff
changeset
|
198 | if (ops != NULL && (ops->read) != NULL) |
|
68569c0a6865
[gaim-migrate @ 7277]
Herman Bloggs <herman@bluedigits.com>
parents:
6738
diff
changeset
|
199 | return (ops->read)(gsc, data, len); |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
200 | |
| 6703 | 201 | return 0; |
| 202 | } | |
| 203 | ||
| 204 | size_t | |
| 205 | gaim_ssl_write(GaimSslConnection *gsc, const void *data, size_t len) | |
| 206 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
207 | GaimSslOps *ops; |
| 6703 | 208 | |
| 209 | g_return_val_if_fail(gsc != NULL, 0); | |
| 210 | g_return_val_if_fail(data != NULL, 0); | |
| 211 | g_return_val_if_fail(len > 0, 0); | |
| 212 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
213 | ops = gaim_ssl_get_ops(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
214 | |
|
6745
68569c0a6865
[gaim-migrate @ 7277]
Herman Bloggs <herman@bluedigits.com>
parents:
6738
diff
changeset
|
215 | if (ops != NULL && (ops->write) != NULL) |
|
68569c0a6865
[gaim-migrate @ 7277]
Herman Bloggs <herman@bluedigits.com>
parents:
6738
diff
changeset
|
216 | return (ops->write)(gsc, data, len); |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
217 | |
| 6703 | 218 | return 0; |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
219 | } |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
220 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
221 | void |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
222 | gaim_ssl_set_ops(GaimSslOps *ops) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
223 | { |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
224 | _ssl_ops = ops; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
225 | } |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
226 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
227 | GaimSslOps * |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
228 | gaim_ssl_get_ops(void) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
229 | { |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
230 | return _ssl_ops; |
| 6703 | 231 | } |
| 232 | ||
| 233 | void | |
| 234 | gaim_ssl_init(void) | |
| 235 | { | |
| 236 | } | |
| 237 | ||
| 238 | void | |
| 239 | gaim_ssl_uninit(void) | |
| 240 | { | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
241 | GaimSslOps *ops; |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
242 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
243 | if (!_ssl_initialized) |
| 6703 | 244 | return; |
| 245 | ||
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
246 | ops = gaim_ssl_get_ops(); |
| 6703 | 247 | |
|
6738
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
248 | if (ops != NULL && ops->uninit != NULL) |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
249 | ops->uninit(); |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
250 | |
|
aa797bcc69dd
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
251 | _ssl_initialized = FALSE; |
| 6703 | 252 | } |