Commit 70dea602081d60d03a3f395312f515907ca4b943

Authored by Perry Werneck
1 parent 111d2402

Working on CRL download for windows.

src/lib3270/ansi.c
@@ -35,6 +35,7 @@ @@ -35,6 +35,7 @@
35 */ 35 */
36 36
37 #pragma GCC diagnostic ignored "-Wsign-compare" 37 #pragma GCC diagnostic ignored "-Wsign-compare"
  38 +#pragma GCC diagnostic ignored "-Wstringop-truncation"
38 39
39 #include "private.h" 40 #include "private.h"
40 41
@@ -44,8 +45,6 @@ @@ -44,8 +45,6 @@
44 #include <X11/Shell.h> 45 #include <X11/Shell.h>
45 #endif /*]*/ 46 #endif /*]*/
46 47
47 -//#include "appres.h"  
48 -// #include "ctlr.h"  
49 #if defined(X3270_DBCS) /*[*/ 48 #if defined(X3270_DBCS) /*[*/
50 #include <lib3270/3270ds.h> 49 #include <lib3270/3270ds.h>
51 #endif /*]*/ 50 #endif /*]*/
@@ -54,8 +53,6 @@ @@ -54,8 +53,6 @@
54 #include "ctlrc.h" 53 #include "ctlrc.h"
55 #include "hostc.h" 54 #include "hostc.h"
56 #include "screenc.h" 55 #include "screenc.h"
57 -// #include "scrollc.h"  
58 -// #include "tablesc.h"  
59 #include "telnetc.h" 56 #include "telnetc.h"
60 #include "trace_dsc.h" 57 #include "trace_dsc.h"
61 #include "utf8c.h" 58 #include "utf8c.h"
@@ -65,68 +62,67 @@ @@ -65,68 +62,67 @@
65 62
66 #define MB_MAX LIB3270_MB_MAX 63 #define MB_MAX LIB3270_MB_MAX
67 64
68 -#define SC 1 /* save cursor position */  
69 -#define RC 2 /* restore cursor position */  
70 -#define NL 3 /* new line */  
71 -#define UP 4 /* cursor up */  
72 -#define E2 5 /* second level of ESC processing */  
73 -#define rS 6 /* reset */  
74 -#define IC 7 /* insert chars */  
75 -#define DN 8 /* cursor down */  
76 -#define RT 9 /* cursor right */  
77 -#define LT 10 /* cursor left */  
78 -#define CM 11 /* cursor motion */  
79 -#define ED 12 /* erase in display */  
80 -#define EL 13 /* erase in line */  
81 -#define IL 14 /* insert lines */  
82 -#define DL 15 /* delete lines */  
83 -#define DC 16 /* delete characters */  
84 -#define SG 17 /* set graphic rendition */  
85 -#define BL 18 /* ring bell */  
86 -#define NP 19 /* new page */  
87 -#define BS 20 /* backspace */  
88 -#define CR 21 /* carriage return */  
89 -#define LF 22 /* line feed */  
90 -#define HT 23 /* horizontal tab */  
91 -#define E1 24 /* first level of ESC processing */  
92 -#define Xx 25 /* undefined control character (nop) */  
93 -#define Pc 26 /* printing character */  
94 -#define Sc 27 /* semicolon (after ESC [) */  
95 -#define Dg 28 /* digit (after ESC [ or ESC [ ?) */  
96 -#define RI 29 /* reverse index */  
97 -#define DA 30 /* send device attributes */  
98 -#define SM 31 /* set mode */  
99 -#define RM 32 /* reset mode */  
100 -#define DO 33 /* return terminal ID (obsolete) */  
101 -#define SR 34 /* device status report */  
102 -#define CS 35 /* character set designate */  
103 -#define E3 36 /* third level of ESC processing */  
104 -#define DS 37 /* DEC private set */  
105 -#define DR 38 /* DEC private reset */  
106 -#define DV 39 /* DEC private save */  
107 -#define DT 40 /* DEC private restore */  
108 -#define SS 41 /* set scrolling region */  
109 -#define TM 42 /* text mode (ESC ]) */  
110 -#define T2 43 /* semicolon (after ESC ]) */  
111 -#define TX 44 /* text parameter (after ESC ] n ;) */  
112 -#define TB 45 /* text parameter done (ESC ] n ; xxx BEL) */  
113 -#define TS 46 /* tab set */  
114 -#define TC 47 /* tab clear */  
115 -#define C2 48 /* character set designate (finish) */  
116 -#define G0 49 /* select G0 character set */  
117 -#define G1 50 /* select G1 character set */  
118 -#define G2 51 /* select G2 character set */  
119 -#define G3 52 /* select G3 character set */  
120 -#define S2 53 /* select G2 for next character */  
121 -#define S3 54 /* select G3 for next character */  
122 -#define MB 55 /* process multi-byte character */ 65 +#define SC 1 /**< @brief save cursor position */
  66 +#define RC 2 /**< @brief restore cursor position */
  67 +#define NL 3 /**< @brief new line */
  68 +#define UP 4 /**< @brief cursor up */
  69 +#define E2 5 /**< @brief second level of ESC processing */
  70 +#define rS 6 /**< @brief reset */
  71 +#define IC 7 /**< @brief insert chars */
  72 +#define DN 8 /**< @brief cursor down */
  73 +#define RT 9 /**< @brief cursor right */
  74 +#define LT 10 /**< @brief cursor left */
  75 +#define CM 11 /**< @brief cursor motion */
  76 +#define ED 12 /**< @brief erase in display */
  77 +#define EL 13 /**< @brief erase in line */
  78 +#define IL 14 /**< @brief insert lines */
  79 +#define DL 15 /**< @brief delete lines */
  80 +#define DC 16 /**< @brief delete characters */
  81 +#define SG 17 /**< @brief set graphic rendition */
  82 +#define BL 18 /**< @brief ring bell */
  83 +#define NP 19 /**< @brief new page */
  84 +#define BS 20 /**< @brief backspace */
  85 +#define CR 21 /**< @brief carriage return */
  86 +#define LF 22 /**< @brief line feed */
  87 +#define HT 23 /**< @brief horizontal tab */
  88 +#define E1 24 /**< @brief first level of ESC processing */
  89 +#define Xx 25 /**< @brief undefined control character (nop) */
  90 +#define Pc 26 /**< @brief printing character */
  91 +#define Sc 27 /**< @brief semicolon (after ESC [) */
  92 +#define Dg 28 /**< @brief digit (after ESC [ or ESC [ ?) */
  93 +#define RI 29 /**< @brief reverse index */
  94 +#define DA 30 /**< @brief send device attributes */
  95 +#define SM 31 /**< @brief set mode */
  96 +#define RM 32 /**< @brief reset mode */
  97 +#define DO 33 /**< @brief return terminal ID (obsolete) */
  98 +#define SR 34 /**< @brief device status report */
  99 +#define CS 35 /**< @brief character set designate */
  100 +#define E3 36 /**< @brief third level of ESC processing */
  101 +#define DS 37 /**< @brief DEC private set */
  102 +#define DR 38 /**< @brief DEC private reset */
  103 +#define DV 39 /**< @brief DEC private save */
  104 +#define DT 40 /**< @brief DEC private restore */
  105 +#define SS 41 /**< @brief set scrolling region */
  106 +#define TM 42 /**< @brief text mode (ESC ]) */
  107 +#define T2 43 /**< @brief semicolon (after ESC ]) */
  108 +#define TX 44 /**< @brief text parameter (after ESC ] n ;) */
  109 +#define TB 45 /**< @brief text parameter done (ESC ] n ; xxx BEL) */
  110 +#define TS 46 /**< @brief tab set */
  111 +#define TC 47 /**< @brief tab clear */
  112 +#define C2 48 /**< @brief character set designate (finish) */
  113 +#define G0 49 /**< @brief select G0 character set */
  114 +#define G1 50 /**< @brief select G1 character set */
  115 +#define G2 51 /**< @brief select G2 character set */
  116 +#define G3 52 /**< @brief select G3 character set */
  117 +#define S2 53 /**< @brief select G2 for next character */
  118 +#define S3 54 /**< @brief select G3 for next character */
  119 +#define MB 55 /**< @brief process multi-byte character */
123 120
124 #define DATA LIB3270_ANSI_STATE_DATA 121 #define DATA LIB3270_ANSI_STATE_DATA
125 #define ESC LIB3270_ANSI_STATE_ESC 122 #define ESC LIB3270_ANSI_STATE_ESC
126 #define CSDES LIB3270_ANSI_STATE_CSDES 123 #define CSDES LIB3270_ANSI_STATE_CSDES
127 #define N1 LIB3270_ANSI_STATE_N1 124 #define N1 LIB3270_ANSI_STATE_N1
128 #define DECP LIB3270_ANSI_STATE_DECP 125 #define DECP LIB3270_ANSI_STATE_DECP
129 -// #define TEXT LIB3270_ANSI_STATE_TEXT  
130 #define TEXT2 LIB3270_ANSI_STATE_TEXT2 126 #define TEXT2 LIB3270_ANSI_STATE_TEXT2
131 #define MBPEND LIB3270_ANSI_STATE_MBPEND 127 #define MBPEND LIB3270_ANSI_STATE_MBPEND
132 128
src/lib3270/glue.c
@@ -1,172 +0,0 @@ @@ -1,172 +0,0 @@
1 -/*  
2 - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270  
3 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a  
4 - * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin  
19 - * St, Fifth Floor, Boston, MA 02110-1301 USA  
20 - *  
21 - * Este programa está nomeado como glue.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - * licinio@bb.com.br (Licínio Luis Branco)  
28 - * kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
29 - *  
30 - */  
31 -  
32 -  
33 -/*  
34 - * glue.c  
35 - * A displayless 3270 Terminal Emulator  
36 - * Glue for missing parts.  
37 - */  
38 -  
39 -  
40 -  
41 -#include "private.h"  
42 -  
43 -#if !defined(_WIN32) /*[*/  
44 - #include <sys/wait.h>  
45 -#else  
46 - #include <windows.h>  
47 -#endif /*]*/  
48 -  
49 -#include <signal.h>  
50 -#include <errno.h>  
51 -#include <stdarg.h>  
52 -  
53 -#include "3270ds.h"  
54 -#include "resources.h"  
55 -  
56 -//#include "actionsc.h"  
57 -#include "ansic.h"  
58 -// #include "charsetc.h"  
59 -#include "ctlrc.h"  
60 -// #include "gluec.h"  
61 -#include "hostc.h"  
62 -// #include "keymapc.h"  
63 -#include "kybdc.h"  
64 -//#include "macrosc.h"  
65 -#include "popupsc.h"  
66 -#include "screenc.h"  
67 -// #include "selectc.h"  
68 -//#include "tablesc.h"  
69 -#include "telnetc.h"  
70 -#include "togglesc.h"  
71 -#include "trace_dsc.h"  
72 -#include "utilc.h"  
73 -// #include "idlec.h"  
74 -// #include "printerc.h"  
75 -  
76 -#if defined(X3270_FT)  
77 - #include "ftc.h"  
78 -#endif  
79 -  
80 -#if defined(_WIN32) /*[*/  
81 -#include "winversc.h"  
82 -#endif /*]*/  
83 -  
84 -// #include "session.h"  
85 -  
86 -#if defined WIN32  
87 - BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd);  
88 -#else  
89 - int lib3270_loaded(void) __attribute__((constructor));  
90 - int lib3270_unloaded(void) __attribute__((destructor));  
91 -#endif  
92 -  
93 - #define LAST_ARG "--"  
94 -  
95 -/*---[ Globals ]--------------------------------------------------------------------------------------------------------------*/  
96 -  
97 -/**  
98 - * @brief Parse an stty control-character specification; a cheap, non-complaining implementation.  
99 - */  
100 -static char parse_ctlchar(char *s)  
101 -{  
102 - if (!s || !*s)  
103 - return 0;  
104 -  
105 - if ((int) strlen(s) > 1)  
106 - {  
107 - if (*s != '^')  
108 - return 0;  
109 - else if (*(s+1) == '?')  
110 - return 0177;  
111 - else  
112 - return *(s+1) - '@';  
113 - } else  
114 - return *s;  
115 -}  
116 -  
117 -int lib3270_loaded(void)  
118 -{  
119 - trace("%s",__FUNCTION__);  
120 -  
121 - ansictl.vintr = parse_ctlchar("^C");  
122 - ansictl.vquit = parse_ctlchar("^\\");  
123 - ansictl.verase = parse_ctlchar("^H");  
124 - ansictl.vkill = parse_ctlchar("^U");  
125 - ansictl.veof = parse_ctlchar("^D");  
126 - ansictl.vwerase = parse_ctlchar("^W");  
127 - ansictl.vrprnt = parse_ctlchar("^R");  
128 - ansictl.vlnext = parse_ctlchar("^V");  
129 -  
130 - return 0;  
131 -}  
132 -  
133 -int lib3270_unloaded(void)  
134 -{  
135 - trace("%s",__FUNCTION__);  
136 - return 0;  
137 -}  
138 -  
139 -  
140 -#if defined WIN32  
141 -  
142 -BOOL WINAPI DllMain(HANDLE hinst unused, DWORD dwcallpurpose, LPVOID lpvResvd unused)  
143 -{  
144 -// Trace("%s - Library %s",__FUNCTION__,(dwcallpurpose == DLL_PROCESS_ATTACH) ? "Loaded" : "Unloaded");  
145 -  
146 - switch(dwcallpurpose)  
147 - {  
148 - case DLL_PROCESS_ATTACH:  
149 - get_version_info();  
150 - lib3270_loaded();  
151 - break;  
152 -  
153 - case DLL_PROCESS_DETACH:  
154 - lib3270_unloaded();  
155 - break;  
156 -  
157 - }  
158 -  
159 - return TRUE;  
160 -}  
161 -  
162 -#endif  
163 -  
164 -  
165 -#ifdef DEBUG  
166 -extern void lib3270_initialize(void)  
167 -{  
168 - lib3270_loaded();  
169 -}  
170 -#endif  
171 -  
172 -  
src/lib3270/init.c 0 → 100644
@@ -0,0 +1,141 @@ @@ -0,0 +1,141 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como - e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 +
  31 +/**
  32 + * @brief Init/Deinit lib3270 internals.
  33 + */
  34 +
  35 +#include <config.h>
  36 +
  37 +#ifdef HAVE_LIBCURL
  38 + #include <curl/curl.h>
  39 +#endif // HAVE_LIBCURL
  40 +
  41 +#include <lib3270.h>
  42 +
  43 +#ifdef _WIN32
  44 + #include <winsock2.h>
  45 + #include <windows.h>
  46 + #include "winversc.h"
  47 +#endif // _WIN32
  48 +
  49 +#include <lib3270/log.h>
  50 +#include "private.h"
  51 +
  52 +#if defined WIN32
  53 + BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd);
  54 +#else
  55 + int lib3270_loaded(void) __attribute__((constructor));
  56 + int lib3270_unloaded(void) __attribute__((destructor));
  57 +#endif
  58 +
  59 +/*---[ Globals ]--------------------------------------------------------------------------------------------------------------*/
  60 +
  61 +/**
  62 + * @brief Parse an stty control-character specification; a cheap, non-complaining implementation.
  63 + */
  64 +static char parse_ctlchar(char *s)
  65 +{
  66 + if (!s || !*s)
  67 + return 0;
  68 +
  69 + if ((int) strlen(s) > 1)
  70 + {
  71 + if (*s != '^')
  72 + return 0;
  73 + else if (*(s+1) == '?')
  74 + return 0177;
  75 + else
  76 + return *(s+1) - '@';
  77 + } else
  78 + return *s;
  79 +}
  80 +
  81 +int lib3270_loaded(void)
  82 +{
  83 + trace("%s",__FUNCTION__);
  84 +
  85 + ansictl.vintr = parse_ctlchar("^C");
  86 + ansictl.vquit = parse_ctlchar("^\\");
  87 + ansictl.verase = parse_ctlchar("^H");
  88 + ansictl.vkill = parse_ctlchar("^U");
  89 + ansictl.veof = parse_ctlchar("^D");
  90 + ansictl.vwerase = parse_ctlchar("^W");
  91 + ansictl.vrprnt = parse_ctlchar("^R");
  92 + ansictl.vlnext = parse_ctlchar("^V");
  93 +
  94 +#ifdef HAVE_LIBCURL
  95 + trace("%s.curl_global_init",__FUNCTION__);
  96 + curl_global_init(CURL_GLOBAL_DEFAULT);
  97 +#endif // HAVE_LIBCURL
  98 +
  99 + return 0;
  100 +}
  101 +
  102 +int lib3270_unloaded(void)
  103 +{
  104 + trace("%s",__FUNCTION__);
  105 +
  106 +#ifdef HAVE_LIBCURL
  107 + trace("%s.curl_global_cleanup",__FUNCTION__);
  108 + curl_global_cleanup();
  109 +#endif // HAVE_LIBCURL
  110 +
  111 + return 0;
  112 +}
  113 +
  114 +
  115 +#if defined WIN32
  116 +
  117 +BOOL WINAPI DllMain(HANDLE hinst unused, DWORD dwcallpurpose, LPVOID lpvResvd unused)
  118 +{
  119 +// Trace("%s - Library %s",__FUNCTION__,(dwcallpurpose == DLL_PROCESS_ATTACH) ? "Loaded" : "Unloaded");
  120 +
  121 + switch(dwcallpurpose)
  122 + {
  123 + case DLL_PROCESS_ATTACH:
  124 + get_version_info();
  125 + lib3270_loaded();
  126 + break;
  127 +
  128 + case DLL_PROCESS_DETACH:
  129 + lib3270_unloaded();
  130 + break;
  131 +
  132 + }
  133 +
  134 + return TRUE;
  135 +}
  136 +
  137 +#endif
  138 +
  139 +
  140 +
  141 +
src/lib3270/private.h
@@ -634,7 +634,6 @@ struct _h3270 @@ -634,7 +634,6 @@ struct _h3270
634 634
635 /* Library internal calls */ 635 /* Library internal calls */
636 LIB3270_INTERNAL void key_ACharacter(H3270 *hSession, unsigned char c, enum keytype keytype, enum iaction cause,Boolean *skipped); 636 LIB3270_INTERNAL void key_ACharacter(H3270 *hSession, unsigned char c, enum keytype keytype, enum iaction cause,Boolean *skipped);
637 -LIB3270_INTERNAL void lib3270_initialize(void);  
638 LIB3270_INTERNAL int cursor_move(H3270 *session, int baddr); 637 LIB3270_INTERNAL int cursor_move(H3270 *session, int baddr);
639 638
640 LIB3270_INTERNAL void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); 639 LIB3270_INTERNAL void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt);
src/lib3270/ssl/windows/getcrl.c
@@ -31,6 +31,8 @@ @@ -31,6 +31,8 @@
31 * http://www.openssl.org/docs/ssl/ 31 * http://www.openssl.org/docs/ssl/
32 * https://stackoverflow.com/questions/4389954/does-openssl-automatically-handle-crls-certificate-revocation-lists-now 32 * https://stackoverflow.com/questions/4389954/does-openssl-automatically-handle-crls-certificate-revocation-lists-now
33 * 33 *
  34 + * https://www.codepool.biz/build-use-libcurl-vs2015-windows.html
  35 + *
34 */ 36 */
35 37
36 #define CRL_DATA_LENGTH 4096 38 #define CRL_DATA_LENGTH 4096
@@ -66,8 +68,11 @@ static inline void lib3270_autoptr_cleanup_CURL(CURL **ptr) @@ -66,8 +68,11 @@ static inline void lib3270_autoptr_cleanup_CURL(CURL **ptr)
66 { 68 {
67 debug("%s(%p)",__FUNCTION__,*ptr); 69 debug("%s(%p)",__FUNCTION__,*ptr);
68 if(*ptr) 70 if(*ptr)
  71 + {
69 curl_easy_cleanup(*ptr); 72 curl_easy_cleanup(*ptr);
  73 + }
70 *ptr = NULL; 74 *ptr = NULL;
  75 +
71 } 76 }
72 77
73 typedef struct _curldata 78 typedef struct _curldata
@@ -98,17 +103,26 @@ static size_t internal_curl_write_callback(void *contents, size_t size, size_t n @@ -98,17 +103,26 @@ static size_t internal_curl_write_callback(void *contents, size_t size, size_t n
98 CURLDATA * data = (CURLDATA *) userp; 103 CURLDATA * data = (CURLDATA *) userp;
99 104
100 size_t realsize = size * nmemb; 105 size_t realsize = size * nmemb;
  106 + size_t ix;
  107 +
  108 + debug("Received %u bytes (datablock is %p)", (unsigned int) realsize, data);
  109 +
  110 + unsigned char *ptr = (unsigned char *) contents;
  111 +
  112 + debug("\n------------------------------------\n%s\n", ptr);
101 113
102 - if((size + data->length) > CRL_DATA_LENGTH) 114 + for(ix = 0; ix < realsize; ix++)
103 { 115 {
104 - debug("CRL Data block is bigger than allocated block (%u bytes)",(unsigned int) size);  
105 - return 0;  
106 - } 116 + if(data->length >= CRL_DATA_LENGTH)
  117 + {
  118 + lib3270_write_log(NULL,"ssl","CRL Data block is bigger than allocated block (%u)", (unsigned int) CRL_DATA_LENGTH);
  119 + return 0;
  120 + }
107 121
108 - debug("Received %u bytes", (unsigned int) realsize); 122 + data->contents[data->length++] = *(ptr++);
  123 + }
109 124
110 - memcpy(&(data->contents[data->length]),contents,realsize);  
111 - data->length += realsize; 125 + debug("\n%s\n-------------------------------------------", data->contents);
112 126
113 return realsize; 127 return realsize;
114 } 128 }
@@ -158,11 +172,15 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message) @@ -158,11 +172,15 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message)
158 172
159 // Use CURL to download the CRL 173 // Use CURL to download the CRL
160 lib3270_autoptr(CURLDATA) crl_data = lib3270_malloc(sizeof(CURLDATA)); 174 lib3270_autoptr(CURLDATA) crl_data = lib3270_malloc(sizeof(CURLDATA));
  175 +
  176 + // Initialize curl and curl_easy
161 lib3270_autoptr(CURL) hCurl = curl_easy_init(); 177 lib3270_autoptr(CURL) hCurl = curl_easy_init();
162 178
163 memset(crl_data,0,sizeof(CURLDATA)); 179 memset(crl_data,0,sizeof(CURLDATA));
164 crl_data->message = message; 180 crl_data->message = message;
165 181
  182 + debug("datablock is %p",crl_data);
  183 +
166 if(hCurl) 184 if(hCurl)
167 { 185 {
168 CURLcode res; 186 CURLcode res;