diff --git a/src/lib3270/html.c b/src/lib3270/html.c index 006156c..9bcc2db 100644 --- a/src/lib3270/html.c +++ b/src/lib3270/html.c @@ -208,7 +208,7 @@ if(info->mode == HTML_MODE_TEXT) return; - trace("maxlength=%d",info->maxlength); +// trace("maxlength=%d",info->maxlength); if(info->maxlength < 1) { diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c index 99f3a47..bac34e3 100644 --- a/src/lib3270/iocalls.c +++ b/src/lib3270/iocalls.c @@ -570,13 +570,21 @@ void RemoveTimeOut(void * timer) return remove_timeout(timer); } +#ifdef WIN32 void * AddInput(HANDLE source, H3270 *session, void (*fn)(H3270 *session)) +#else +void * AddInput(int source, H3270 *session, void (*fn)(H3270 *session)) +#endif // WIN32 { CHECK_SESSION_HANDLE(session); return add_input(source,session,fn); } +#ifdef WIN32 void * AddExcept(HANDLE source, H3270 *session, void (*fn)(H3270 *session)) +#else +void * AddExcept(int source, H3270 *session, void (*fn)(H3270 *session)) +#endif // WIN32 { CHECK_SESSION_HANDLE(session); return add_except(source,session,fn); diff --git a/src/lib3270/proxy.c b/src/lib3270/proxy.c index 780633d..07fe797 100644 --- a/src/lib3270/proxy.c +++ b/src/lib3270/proxy.c @@ -341,8 +341,7 @@ proxy_negotiate(int type, int fd, char *host, unsigned short port) } /* Sun PASSTHRU proxy. */ -static int -proxy_passthru(int fd, char *host, unsigned short port) +static int proxy_passthru(int fd, char *host, unsigned short port) { char *buf; @@ -351,11 +350,12 @@ proxy_passthru(int fd, char *host, unsigned short port) #if defined(X3270_TRACE) /*[*/ trace_dsn("Passthru Proxy: xmit '%.*s'", (int) (strlen(buf) - 2), buf); - trace_netdata('>', (unsigned char *)buf, (int) strlen(buf)); + trace_netdata(&h3270,'>', (unsigned char *)buf, (int) strlen(buf)); #endif /*]*/ - if (send(fd, buf, strlen(buf), 0) < 0) { - popup_a_sockerr(NULL,"Passthru Proxy: send error"); + if (send(fd, buf, strlen(buf), 0) < 0) + { + popup_a_sockerr(NULL,"Passthru Proxy: send error"); lib3270_free(buf); return -1; } @@ -386,7 +386,7 @@ proxy_http(int fd, char *host, unsigned short port) #if defined(X3270_TRACE) /*[*/ trace_dsn("HTTP Proxy: xmit '%.*s'\n", (int) (strlen(buf) - 2), buf); - trace_netdata('>', (unsigned char *)buf, (int) strlen(buf)); + trace_netdata(&h3270, '>', (unsigned char *)buf, (int) strlen(buf)); #endif /*]*/ if (send(fd, buf, strlen(buf), 0) < 0) { @@ -403,7 +403,7 @@ proxy_http(int fd, char *host, unsigned short port) #if defined(X3270_TRACE) /*[*/ trace_dsn("HTTP Proxy: xmit '%.*s'\n", (int) (strlen(buf) - 2), buf); - trace_netdata('>', (unsigned char *)buf, (int) strlen(buf)); + trace_netdata(&h3270, '>', (unsigned char *)buf, (int) strlen(buf)); #endif /*]*/ if (send(fd, buf, strlen(buf), 0) < 0) { @@ -415,7 +415,7 @@ proxy_http(int fd, char *host, unsigned short port) strcpy(buf, "\r\n"); #if defined(X3270_TRACE) /*[*/ trace_dsn("HTTP Proxy: xmit ''\n"); - trace_netdata('>', (unsigned char *)buf, strlen(buf)); + trace_netdata(&h3270, '>', (unsigned char *)buf, strlen(buf)); #endif /*]*/ if (send(fd, buf, strlen(buf), 0) < 0) { @@ -441,7 +441,7 @@ proxy_http(int fd, char *host, unsigned short port) popup_an_error(NULL,"HTTP Proxy: server timeout"); #if defined(X3270_TRACE) /*[*/ if (nread) - trace_netdata('<', (unsigned char *)rbuf, nread); + trace_netdata(&h3270, '<', (unsigned char *)rbuf, nread); #endif /*]*/ return -1; } @@ -451,14 +451,14 @@ proxy_http(int fd, char *host, unsigned short port) popup_a_sockerr(NULL,"HTTP Proxy: receive error"); #if defined(X3270_TRACE) /*[*/ if (nread) - trace_netdata('<', (unsigned char *)rbuf, nread); + trace_netdata(&h3270, '<', (unsigned char *)rbuf, nread); #endif /*]*/ return -1; } if (nr == 0) { #if defined(X3270_TRACE) /*[*/ if (nread) - trace_netdata('<', (unsigned char *)rbuf, nread); + trace_netdata(&h3270, '<', (unsigned char *)rbuf, nread); #endif /*]*/ popup_an_error(NULL,"HTTP Proxy: unexpected EOF"); return -1; @@ -475,7 +475,7 @@ proxy_http(int fd, char *host, unsigned short port) rbuf[nread] = '\0'; #if defined(X3270_TRACE) /*[*/ - trace_netdata('<', (unsigned char *)rbuf, nread); + trace_netdata(&h3270, '<', (unsigned char *)rbuf, nread); trace_dsn("HTTP Proxy: recv '%s'\n", rbuf); #endif /*]*/ @@ -502,7 +502,7 @@ proxy_telnet(int fd, char *host, unsigned short port) #if defined(X3270_TRACE) /*[*/ trace_dsn("TELNET Proxy: xmit '%.*s'", (int) (strlen(buf) - 2), buf); - trace_netdata('>', (unsigned char *)buf, (int) strlen(buf)); + trace_netdata(&h3270, '>', (unsigned char *)buf, (int) strlen(buf)); #endif /*]*/ if (send(fd, buf, strlen(buf), 0) < 0) { @@ -735,7 +735,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) strcpy((char *)rbuf, "\005\001\000"); #if defined(X3270_TRACE) /*[*/ trace_dsn("SOCKS5 Proxy: xmit version 5 nmethods 1 (no auth)\n"); - trace_netdata('>', rbuf, 3); + trace_netdata(&h3270, '>', rbuf, 3); #endif /*]*/ if (send(fd, (const char *) rbuf, 3, 0) < 0) { popup_a_sockerr(NULL,"SOCKS5 Proxy: send error"); @@ -755,29 +755,32 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) FD_SET(fd, &rfds); tv.tv_sec = 15; tv.tv_usec = 0; - if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) { - popup_an_error(NULL,"SOCKS5 Proxy: server timeout"); + if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) + { + popup_an_error(&h3270,"SOCKS5 Proxy: server timeout"); #if defined(X3270_TRACE) /*[*/ - if (nread) - trace_netdata('<', rbuf, nread); + if (nread) + trace_netdata(&h3270, '<', rbuf, nread); #endif /*]*/ return -1; } nr = recv(fd, (char *) &rbuf[nread], 1, 0); - if (nr < 0) { - popup_a_sockerr(NULL,"SOCKS5 Proxy: receive error"); + if (nr < 0) + { + popup_a_sockerr(&h3270,"SOCKS5 Proxy: receive error"); #if defined(X3270_TRACE) /*[*/ - if (nread) - trace_netdata('<', rbuf, nread); + if (nread) + trace_netdata(&h3270, '<', rbuf, nread); #endif /*]*/ return -1; } - if (nr == 0) { + if (nr == 0) + { popup_a_sockerr(NULL,"SOCKS5 Proxy: unexpected EOF"); #if defined(X3270_TRACE) /*[*/ - if (nread) - trace_netdata('<', rbuf, nread); + if (nread) + trace_netdata(&h3270, '<', rbuf, nread); #endif /*]*/ return -1; } @@ -786,17 +789,17 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) } #if defined(X3270_TRACE) /*[*/ - trace_netdata('<', rbuf, nread); + trace_netdata(&h3270, '<', rbuf, nread); #endif /*]*/ - if (rbuf[0] != 0x05 || (rbuf[1] != 0 && rbuf[1] != 0xff)) { - popup_an_error(NULL,"SOCKS5 Proxy: bad authentication response"); + if (rbuf[0] != 0x05 || (rbuf[1] != 0 && rbuf[1] != 0xff)) + { + popup_an_error(NULL,"SOCKS5 Proxy: bad authentication response"); return -1; } #if defined(X3270_TRACE) /*[*/ - trace_dsn("SOCKS5 Proxy: recv version %d method %d\n", rbuf[0], - rbuf[1]); + trace_dsn("SOCKS5 Proxy: recv version %d method %d\n", rbuf[0],rbuf[1]); #endif /*]*/ if (rbuf[1] == 0xff) { @@ -836,7 +839,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) ((ha.sa.sa_family == AF_INET)? "IPv4": "IPv6"), use_name? host: nbuf, port); - trace_netdata('>', (unsigned char *)buf, s - buf); + trace_netdata(&h3270, '>', (unsigned char *)buf, s - buf); #endif /*]*/ if (send(fd, buf, s - buf, 0) < 0) { @@ -869,19 +872,21 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) } nr = recv(fd, (char *) &r, 1, 0); - if (nr < 0) { + if (nr < 0) + { popup_a_sockerr(NULL,"SOCKS5 Proxy: receive error"); #if defined(X3270_TRACE) /*[*/ - if (nread) - trace_netdata('<', (unsigned char *)buf, nread); + if (nread) + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); #endif /*]*/ return -1; } - if (nr == 0) { - popup_an_error(NULL,"SOCKS5 Proxy: unexpected EOF"); + if (nr == 0) + { + popup_an_error(&h3270, "SOCKS5 Proxy: unexpected EOF"); #if defined(X3270_TRACE) /*[*/ - if (nread) - trace_netdata('<', (unsigned char *)buf, nread); + if (nread) + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); #endif /*]*/ return -1; } @@ -891,12 +896,12 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) switch (nread++) { case 0: - if (r != 0x05) { - popup_an_error(NULL,"SOCKS5 Proxy: incorrect " - "reply version 0x%02x", r); + if (r != 0x05) + { + popup_an_error(&h3270, "SOCKS5 Proxy: incorrect reply version 0x%02x", r); #if defined(X3270_TRACE) /*[*/ if (nread) - trace_netdata('<', (unsigned char *)buf, nread); + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); #endif /*]*/ return -1; } @@ -904,17 +909,16 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) case 1: #if defined(X3270_TRACE) /*[*/ if (r != 0x00) - trace_netdata('<', (unsigned char *)buf, nread); + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); #endif /*]*/ switch (r) { case 0x00: break; case 0x01: - popup_an_error(NULL,"SOCKS5 Proxy: server failure"); + popup_an_error(&h3270, "SOCKS5 Proxy: server failure"); return -1; case 0x02: - popup_an_error(NULL,"SOCKS5 Proxy: connection not " - "allowed"); + popup_an_error(&h3270, "SOCKS5 Proxy: connection not allowed"); return -1; case 0x03: popup_an_error(NULL,"SOCKS5 Proxy: network " @@ -961,11 +965,10 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) break; #endif /*]*/ default: - popup_an_error(NULL,"SOCKS5 Proxy: unknown server " - "address type 0x%02x", r); + popup_an_error(&h3270, "SOCKS5 Proxy: unknown server address type 0x%02x", r); #if defined(X3270_TRACE) /*[*/ if (nread) - trace_netdata('<', (unsigned char *)buf, nread); + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); #endif /*]*/ return -1; } @@ -980,7 +983,7 @@ proxy_socks5(int fd, char *host, unsigned short port, int force_d) } #if defined(X3270_TRACE) /*[*/ - trace_netdata('<', (unsigned char *)buf, nread); + trace_netdata(&h3270, '<', (unsigned char *)buf, nread); switch (buf[3]) { case 0x01: /* IPv4 */ memcpy(&ha.sin.sin_addr, &buf[4], 4); diff --git a/src/lib3270/telnet.c b/src/lib3270/telnet.c index 971c653..12ee56f 100644 --- a/src/lib3270/telnet.c +++ b/src/lib3270/telnet.c @@ -210,7 +210,7 @@ static char vlnext; // static unsigned short proxy_port = 0; static int telnet_fsm(H3270 *session, unsigned char c); -static void net_rawout(H3270 *session, unsigned const char *buf, int len); +static void net_rawout(H3270 *session, unsigned const char *buf, size_t len); static void check_in3270(H3270 *session); static void store3270in(H3270 *hSession, unsigned char c); static void check_linemode(H3270 *hSession, Boolean init); @@ -992,7 +992,9 @@ LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned { register const unsigned char * cp; - trace_netdata('<', netrbuf, nr); + trace("%s: nr=%d",__FUNCTION__,nr); + + trace_netdata(hSession, '<', netrbuf, nr); hSession->ns_brcvd += nr; for (cp = netrbuf; cp < (netrbuf + nr); cp++) @@ -2096,15 +2098,20 @@ LIB3270_INTERNAL int lib3270_sock_send(H3270 *hSession, unsigned const char *buf return -1; } -/* - * net_rawout - * Send out raw telnet data. We assume that there will always be enough - * space to buffer what we want to transmit, so we don't handle EAGAIN or - * EWOULDBLOCK. +/** + * Send out raw telnet data. + * + * We assume that there will always be enough space to buffer what we want to transmit, + * so we don't handle EAGAIN or EWOULDBLOCK. + * + * @param hSession Session handle. + * @param buf Buffer to send. + * @param len Buffer length + * */ -static void net_rawout(H3270 *hSession, unsigned const char *buf, int len) +static void net_rawout(H3270 *hSession, unsigned const char *buf, size_t len) { - trace_netdata('>', buf, len); + trace_netdata(hSession, '>', buf, len); while (len) { @@ -2669,22 +2676,26 @@ opt(unsigned char c) #define LINEDUMP_MAX 32 -void trace_netdata(char direction, unsigned const char *buf, int len) +void trace_netdata(H3270 *hSession, char direction, unsigned const char *buf, int len) { int offset; struct timeval ts; double tdiff; - if (!lib3270_get_toggle(&h3270,LIB3270_TOGGLE_DS_TRACE)) + if (!lib3270_get_toggle(hSession,LIB3270_TOGGLE_DS_TRACE)) return; + (void) gettimeofday(&ts, (struct timezone *)NULL); - if (IN_3270) { + if (IN_3270) + { tdiff = ((1.0e6 * (double)(ts.tv_sec - h3270.ds_ts.tv_sec)) + (double)(ts.tv_usec - h3270.ds_ts.tv_usec)) / 1.0e6; trace_dsn("%c +%gs\n", direction, tdiff); } - h3270.ds_ts = ts; - for (offset = 0; offset < len; offset++) { + + hSession->ds_ts = ts; + for (offset = 0; offset < len; offset++) + { if (!(offset % LINEDUMP_MAX)) trace_dsn("%s%c 0x%-3x ", (offset ? "\n" : ""), direction, offset); diff --git a/src/lib3270/telnetc.h b/src/lib3270/telnetc.h index d4ef4fe..99fa1b7 100644 --- a/src/lib3270/telnetc.h +++ b/src/lib3270/telnetc.h @@ -60,7 +60,7 @@ LIB3270_INTERNAL void space3270out(H3270 *hSession, int n); // LIB3270_INTERNAL char *net_proxy_port(void); #if defined(X3270_TRACE) - LIB3270_INTERNAL void trace_netdata(char direction, unsigned const char *buf, int len); + LIB3270_INTERNAL void trace_netdata(H3270 *hSession, char direction, unsigned const char *buf, int len); #else #define trace_netdata(direction, buf, len) /* */ #endif // X3270_TRACE -- libgit2 0.21.2