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,7 +245,10 @@ static void net_connected(H3270 *hSession) | ||
245 | sockstart(hSession); | 245 | sockstart(hSession); |
246 | #endif | 246 | #endif |
247 | 247 | ||
248 | +#if defined(HAVE_LIBSSL) | ||
248 | set_ssl_state(hSession,LIB3270_SSL_UNSECURE); | 249 | set_ssl_state(hSession,LIB3270_SSL_UNSECURE); |
250 | +#endif // HAVE_LIBSSL | ||
251 | + | ||
249 | snprintf(hSession->full_model_name,LIB3270_FULL_MODEL_NAME_LENGTH,"IBM-327%c-%d",hSession->m3279 ? '9' : '8', hSession->model_num); | 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,7 +334,7 @@ static void net_connected(H3270 *hSession) | ||
331 | _( "SSL error" ), | 334 | _( "SSL error" ), |
332 | _( "Unable to connect to secure hosts" ), | 335 | _( "Unable to connect to secure hosts" ), |
333 | _( "This version of %s was built without support for secure sockets layer (SSL)." ), | 336 | _( "This version of %s was built without support for secure sockets layer (SSL)." ), |
334 | - PACKAGE_NAME)); | 337 | + PACKAGE_NAME); |
335 | 338 | ||
336 | return EINVAL; | 339 | return EINVAL; |
337 | #endif // HAVE_LIBSSL | 340 | #endif // HAVE_LIBSSL |
host.c
@@ -61,300 +61,6 @@ | @@ -61,300 +61,6 @@ | ||
61 | static void try_reconnect(H3270 *session); | 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 | * Called from timer to attempt an automatic reconnection. | 64 | * Called from timer to attempt an automatic reconnection. |
359 | */ | 65 | */ |
360 | static void try_reconnect(H3270 *session) | 66 | static void try_reconnect(H3270 *session) |
@@ -48,7 +48,9 @@ | @@ -48,7 +48,9 @@ | ||
48 | #include <lib3270/trace.h> | 48 | #include <lib3270/trace.h> |
49 | #include "trace_dsc.h" | 49 | #include "trace_dsc.h" |
50 | 50 | ||
51 | +#if defined(HAVE_LIBSSL) | ||
51 | static int ssl_3270_ex_index = -1; /**< Index of h3270 handle in SSL session */ | 52 | static int ssl_3270_ex_index = -1; /**< Index of h3270 handle in SSL session */ |
53 | +#endif // HAVE_LIBSSL | ||
52 | 54 | ||
53 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 55 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
54 | 56 |
telnet.c
@@ -141,7 +141,10 @@ static void check_in3270(H3270 *session); | @@ -141,7 +141,10 @@ static void check_in3270(H3270 *session); | ||
141 | static void store3270in(H3270 *hSession, unsigned char c); | 141 | static void store3270in(H3270 *hSession, unsigned char c); |
142 | static void check_linemode(H3270 *hSession, Boolean init); | 142 | static void check_linemode(H3270 *hSession, Boolean init); |
143 | static int net_connected(H3270 *session); | 143 | static int net_connected(H3270 *session); |
144 | + | ||
145 | +#if defined(HAVE_LIBSSL) | ||
144 | static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len); | 146 | static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len); |
147 | +#endif // HAVE_LIBSSL | ||
145 | 148 | ||
146 | #if defined(X3270_TN3270E) /*[*/ | 149 | #if defined(X3270_TN3270E) /*[*/ |
147 | static int tn3270e_negotiate(H3270 *hSession); | 150 | static int tn3270e_negotiate(H3270 *hSession); |
@@ -924,7 +927,9 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession) | @@ -924,7 +927,9 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession) | ||
924 | */ | 927 | */ |
925 | void net_disconnect(H3270 *session) | 928 | void net_disconnect(H3270 *session) |
926 | { | 929 | { |
930 | +#if defined(HAVE_LIBSSL) | ||
927 | set_ssl_state(session,LIB3270_SSL_UNSECURE); | 931 | set_ssl_state(session,LIB3270_SSL_UNSECURE); |
932 | +#endif // HAVE_LIBSSL | ||
928 | 933 | ||
929 | session->disconnect(session); | 934 | session->disconnect(session); |
930 | 935 | ||
@@ -1498,6 +1503,7 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) | @@ -1498,6 +1503,7 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) | ||
1498 | return 0; | 1503 | return 0; |
1499 | } | 1504 | } |
1500 | 1505 | ||
1506 | +#if defined(HAVE_LIBSSL) | ||
1501 | /** | 1507 | /** |
1502 | * Process a STARTTLS subnegotiation. | 1508 | * Process a STARTTLS subnegotiation. |
1503 | */ | 1509 | */ |
@@ -1520,6 +1526,7 @@ static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len) | @@ -1520,6 +1526,7 @@ static void continue_tls(H3270 *hSession, unsigned char *sbbuf, int len) | ||
1520 | trace_dsn(hSession,"%s FOLLOWS %s\n", opt(TELOPT_STARTTLS), cmd(SE)); | 1526 | trace_dsn(hSession,"%s FOLLOWS %s\n", opt(TELOPT_STARTTLS), cmd(SE)); |
1521 | ssl_negotiate(hSession); | 1527 | ssl_negotiate(hSession); |
1522 | } | 1528 | } |
1529 | +#endif // HAVE_LIBSSL | ||
1523 | 1530 | ||
1524 | #if defined(X3270_TN3270E) /*[*/ | 1531 | #if defined(X3270_TN3270E) /*[*/ |
1525 | /* Send a TN3270E terminal type request. */ | 1532 | /* Send a TN3270E terminal type request. */ |