Commit f5d107a33e58b3d1ca8a55a8d6bbadfcbef53c96
1 parent
3af8230b
Exists in
master
and in
3 other branches
Ajustes para compilar sem a openSSL
Showing
4 changed files
with
13 additions
and
295 deletions
Show diff stats
connect.c
... | ... | @@ -245,7 +245,10 @@ static void net_connected(H3270 *hSession) |
245 | 245 | sockstart(hSession); |
246 | 246 | #endif |
247 | 247 | |
248 | +#if defined(HAVE_LIBSSL) | |
248 | 249 | set_ssl_state(hSession,LIB3270_SSL_UNSECURE); |
250 | +#endif // HAVE_LIBSSL | |
251 | + | |
249 | 252 | snprintf(hSession->full_model_name,LIB3270_FULL_MODEL_NAME_LENGTH,"IBM-327%c-%d",hSession->m3279 ? '9' : '8', hSession->model_num); |
250 | 253 | |
251 | 254 | |
... | ... | @@ -331,7 +334,7 @@ static void net_connected(H3270 *hSession) |
331 | 334 | _( "SSL error" ), |
332 | 335 | _( "Unable to connect to secure hosts" ), |
333 | 336 | _( "This version of %s was built without support for secure sockets layer (SSL)." ), |
334 | - PACKAGE_NAME)); | |
337 | + PACKAGE_NAME); | |
335 | 338 | |
336 | 339 | return EINVAL; |
337 | 340 | #endif // HAVE_LIBSSL | ... | ... |
host.c
... | ... | @@ -61,300 +61,6 @@ |
61 | 61 | static void try_reconnect(H3270 *session); |
62 | 62 | |
63 | 63 | /* |
64 | - * Strip qualifiers from a hostname. | |
65 | - * Returns the hostname part in a newly-malloc'd string. | |
66 | - * 'needed' is returned True if anything was actually stripped. | |
67 | - * Returns NULL if there is a syntax error. | |
68 | - */ /* | |
69 | -static char * | |
70 | -split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | |
71 | - char *non_e, char *secure, char *no_login, char *xluname, | |
72 | - char **port, char *needed) | |
73 | -{ | |
74 | - char *lbracket = CN; | |
75 | - char *at = CN; | |
76 | - char *r = NULL; | |
77 | - char colon = False; | |
78 | - | |
79 | - *ansi = False; | |
80 | - *std_ds = False; | |
81 | - *passthru = False; | |
82 | - *non_e = False; | |
83 | - *secure = False; | |
84 | - *xluname = '\0'; | |
85 | - *port = CN; | |
86 | - | |
87 | - *needed = False; | |
88 | - | |
89 | - // | |
90 | - // Hostname syntax is: | |
91 | - // Zero or more optional prefixes (A:, S:, P:, N:, L:, C:). | |
92 | - // An optional LU name separated by '@'. | |
93 | - // A hostname optionally in square brackets (which quote any colons | |
94 | - // in the name). | |
95 | - // An optional port name or number separated from the hostname by a | |
96 | - // space or colon. | |
97 | - // No additional white space or colons are allowed. | |
98 | - // | |
99 | - | |
100 | - // Strip leading whitespace. | |
101 | - while (*s && isspace(*s)) | |
102 | - s++; | |
103 | - | |
104 | - if (!*s) | |
105 | - { | |
106 | - popup_an_error(hSession,_( "Empty hostname" )); | |
107 | - goto split_fail; | |
108 | - } | |
109 | - | |
110 | - // Strip trailing whitespace. | |
111 | - while (isspace(*(s + strlen(s) - 1))) | |
112 | - *(s + strlen(s) - 1) = '\0'; | |
113 | - | |
114 | - // Start with the prefixes. | |
115 | - while (*s && *(s + 1) && isalpha(*s) && *(s + 1) == ':') { | |
116 | - switch (*s) { | |
117 | - case 'a': | |
118 | - case 'A': | |
119 | - *ansi = True; | |
120 | - break; | |
121 | - case 's': | |
122 | - case 'S': | |
123 | - *std_ds = True; | |
124 | - break; | |
125 | - case 'p': | |
126 | - case 'P': | |
127 | - *passthru = True; | |
128 | - break; | |
129 | - case 'n': | |
130 | - case 'N': | |
131 | - *non_e = True; | |
132 | - break; | |
133 | -#if defined(HAVE_LIBSSL) | |
134 | - case 'l': | |
135 | - case 'L': | |
136 | - *secure = True; | |
137 | - break; | |
138 | -#else | |
139 | - case 'l': | |
140 | - case 'L': | |
141 | - popup_system_error(hSession, _( "SSL error" ), | |
142 | - _( "Unable to connect to secure hosts" ), | |
143 | - _( "This version of %s was built without support for secure sockets layer (SSL)." ), | |
144 | - PACKAGE_NAME | |
145 | - ); | |
146 | - | |
147 | - goto split_fail; | |
148 | -#endif // HAVE_LIBSSL | |
149 | - case 'c': | |
150 | - case 'C': | |
151 | - *no_login = True; | |
152 | - break; | |
153 | - default: | |
154 | - popup_system_error(hSession, _( "Hostname syntax error" ), | |
155 | - _( "Can't connect to host" ), | |
156 | - _( "Option '%c:' is not supported" ), | |
157 | - *s ); | |
158 | - | |
159 | - goto split_fail; | |
160 | - } | |
161 | - *needed = True; | |
162 | - s += 2; | |
163 | - | |
164 | - // Allow whitespace around the prefixes. | |
165 | - while (*s && isspace(*s)) | |
166 | - s++; | |
167 | - } | |
168 | - | |
169 | - // Process the LU name. | |
170 | - lbracket = strchr(s, '['); | |
171 | - at = strchr(s, '@'); | |
172 | - if (at != CN && lbracket != CN && at > lbracket) | |
173 | - at = CN; | |
174 | - if (at != CN) { | |
175 | - char *t; | |
176 | - char *lu_last = at - 1; | |
177 | - | |
178 | - if (at == s) { | |
179 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Empty LU name")); | |
180 | - goto split_fail; | |
181 | - } | |
182 | - while (lu_last < s && isspace(*lu_last)) | |
183 | - lu_last--; | |
184 | - for (t = s; t <= lu_last; t++) { | |
185 | - if (isspace(*t)) { | |
186 | - char *u = t + 1; | |
187 | - | |
188 | - while (isspace(*u)) | |
189 | - u++; | |
190 | - if (*u != '@') { | |
191 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Space in LU name")); | |
192 | - goto split_fail; | |
193 | - } | |
194 | - break; | |
195 | - } | |
196 | - if (t - s < LIB3270_LUNAME_LENGTH) { | |
197 | - xluname[t - s] = *t; | |
198 | - } | |
199 | - } | |
200 | - xluname[t - s] = '\0'; | |
201 | - s = at + 1; | |
202 | - while (*s && isspace(*s)) | |
203 | - s++; | |
204 | - *needed = True; | |
205 | - } | |
206 | - | |
207 | - // | |
208 | - // Isolate the hostname. | |
209 | - // At this point, we've found its start, so we can malloc the buffer | |
210 | - // that will hold the copy. | |
211 | - /// | |
212 | - if (lbracket != CN) { | |
213 | - char *rbracket; | |
214 | - | |
215 | - // Check for junk before the '['. | |
216 | - if (lbracket != s) { | |
217 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Text before '['")); | |
218 | - goto split_fail; | |
219 | - } | |
220 | - | |
221 | - s = r = NewString(lbracket + 1); | |
222 | - | |
223 | - // | |
224 | - // Take whatever is inside square brackets, including | |
225 | - // whitespace, unmodified -- except for empty strings. | |
226 | - // | |
227 | - rbracket = strchr(s, ']'); | |
228 | - if (rbracket == CN) { | |
229 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Missing ']'")); | |
230 | - goto split_fail; | |
231 | - } | |
232 | - if (rbracket == s) { | |
233 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Empty hostname")); | |
234 | - goto split_fail; | |
235 | - } | |
236 | - *rbracket = '\0'; | |
237 | - | |
238 | - // Skip over any whitespace after the bracketed name. | |
239 | - s = rbracket + 1; | |
240 | - while (*s && isspace(*s)) | |
241 | - s++; | |
242 | - if (!*s) | |
243 | - goto split_success; | |
244 | - colon = (*s == ':'); | |
245 | - } else { | |
246 | - char *name_end; | |
247 | - | |
248 | - // Check for an empty string. | |
249 | - if (!*s || *s == ':') { | |
250 | - popup_an_error(hSession,"Empty hostname"); | |
251 | - goto split_fail; | |
252 | - } | |
253 | - | |
254 | - s = r = NewString(s); | |
255 | - | |
256 | - // Find the end of the hostname. | |
257 | - while (*s && !isspace(*s) && *s != ':') | |
258 | - s++; | |
259 | - name_end = s; | |
260 | - | |
261 | - // If the terminator is whitespace, skip the rest of it. | |
262 | - while (*s && isspace(*s)) | |
263 | - s++; | |
264 | - | |
265 | - // | |
266 | - // If there's nothing but whitespace (or nothing) after the | |
267 | - // name, we're done. | |
268 | - // | |
269 | - if (*s == '\0') { | |
270 | - *name_end = '\0'; | |
271 | - goto split_success; | |
272 | - } | |
273 | - colon = (*s == ':'); | |
274 | - *name_end = '\0'; | |
275 | - } | |
276 | - | |
277 | - // | |
278 | - // If 'colon' is set, 's' points at it (or where it was). Skip | |
279 | - // it and any whitespace that follows. | |
280 | - // | |
281 | - if (colon) { | |
282 | - s++; | |
283 | - while (*s && isspace(*s)) | |
284 | - s++; | |
285 | - if (!*s) { | |
286 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Empty port name")); | |
287 | - goto split_fail; | |
288 | - } | |
289 | - } | |
290 | - | |
291 | - // | |
292 | - // Set the portname and find its end. | |
293 | - // Note that trailing spaces were already stripped, so the end of the | |
294 | - // portname must be a NULL. | |
295 | - // | |
296 | - *port = s; | |
297 | - *needed = True; | |
298 | - while (*s && !isspace(*s) && *s != ':') | |
299 | - s++; | |
300 | - if (*s != '\0') { | |
301 | - popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Multiple port names")); | |
302 | - goto split_fail; | |
303 | - } | |
304 | - goto split_success; | |
305 | - | |
306 | -split_fail: | |
307 | - lib3270_free(r); | |
308 | - r = CN; | |
309 | - | |
310 | -split_success: | |
311 | - return r; | |
312 | -} | |
313 | -*/ | |
314 | - | |
315 | -/* | |
316 | -int lib3270_connect(H3270 *hSession, int wait) | |
317 | -{ | |
318 | - int rc; | |
319 | - | |
320 | - CHECK_SESSION_HANDLE(hSession); | |
321 | - | |
322 | - lib3270_main_iterate(hSession,0); | |
323 | - | |
324 | - if (CONNECTED || HALF_CONNECTED) | |
325 | - return EBUSY; | |
326 | - | |
327 | - if(!hSession->host.full) | |
328 | - return EINVAL; | |
329 | - | |
330 | - if (hSession->auto_reconnect_inprogress) | |
331 | - return EBUSY; | |
332 | - | |
333 | - if(PCONNECTED) | |
334 | - return EBUSY; | |
335 | - | |
336 | - rc = do_connect(hSession); | |
337 | - if(rc) | |
338 | - return rc; | |
339 | - | |
340 | - if(wait) | |
341 | - { | |
342 | - while(!IN_ANSI && !IN_3270) | |
343 | - { | |
344 | - lib3270_main_iterate(hSession,1); | |
345 | - | |
346 | - if(!PCONNECTED) | |
347 | - { | |
348 | - return ENOTCONN; | |
349 | - } | |
350 | - } | |
351 | - } | |
352 | - | |
353 | - return rc; | |
354 | -} | |
355 | -*/ | |
356 | - | |
357 | -/* | |
358 | 64 | * Called from timer to attempt an automatic reconnection. |
359 | 65 | */ |
360 | 66 | static void try_reconnect(H3270 *session) | ... | ... |
... | ... | @@ -48,7 +48,9 @@ |
48 | 48 | #include <lib3270/trace.h> |
49 | 49 | #include "trace_dsc.h" |
50 | 50 | |
51 | +#if defined(HAVE_LIBSSL) | |
51 | 52 | static int ssl_3270_ex_index = -1; /**< Index of h3270 handle in SSL session */ |
53 | +#endif // HAVE_LIBSSL | |
52 | 54 | |
53 | 55 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
54 | 56 | ... | ... |
telnet.c
... | ... | @@ -141,7 +141,10 @@ static void check_in3270(H3270 *session); |
141 | 141 | static void store3270in(H3270 *hSession, unsigned char c); |
142 | 142 | static void check_linemode(H3270 *hSession, Boolean init); |
143 | 143 | static int net_connected(H3270 *session); |
144 | + | |
145 | +#if defined(HAVE_LIBSSL) | |
144 | 146 | static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len); |
147 | +#endif // HAVE_LIBSSL | |
145 | 148 | |
146 | 149 | #if defined(X3270_TN3270E) /*[*/ |
147 | 150 | static int tn3270e_negotiate(H3270 *hSession); |
... | ... | @@ -924,7 +927,9 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession) |
924 | 927 | */ |
925 | 928 | void net_disconnect(H3270 *session) |
926 | 929 | { |
930 | +#if defined(HAVE_LIBSSL) | |
927 | 931 | set_ssl_state(session,LIB3270_SSL_UNSECURE); |
932 | +#endif // HAVE_LIBSSL | |
928 | 933 | |
929 | 934 | session->disconnect(session); |
930 | 935 | |
... | ... | @@ -1498,6 +1503,7 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) |
1498 | 1503 | return 0; |
1499 | 1504 | } |
1500 | 1505 | |
1506 | +#if defined(HAVE_LIBSSL) | |
1501 | 1507 | /** |
1502 | 1508 | * Process a STARTTLS subnegotiation. |
1503 | 1509 | */ |
... | ... | @@ -1520,6 +1526,7 @@ static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len) |
1520 | 1526 | trace_dsn(hSession,"%s FOLLOWS %s\n", opt(TELOPT_STARTTLS), cmd(SE)); |
1521 | 1527 | ssl_negotiate(hSession); |
1522 | 1528 | } |
1529 | +#endif // HAVE_LIBSSL | |
1523 | 1530 | |
1524 | 1531 | #if defined(X3270_TN3270E) /*[*/ |
1525 | 1532 | /* Send a TN3270E terminal type request. */ | ... | ... |