Loading tpws/helpers.h +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ // this saves memory. sockaddr_storage is larger than required. it can be 128 bytes. sockaddr_in6 is 28 bytes. typedef union { sa_family_t sa_family; struct sockaddr_in sa4; // size 16 struct sockaddr_in6 sa6; // size 28 } sockaddr_in46; Loading tpws/tamper.c +9 −6 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ static void TLSDebug(const uint8_t *tls,size_t sz) TLSDebugHandshake(tls+5,sz-5); } static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname) bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname) { if (!params.cache_hostname) return true; Loading @@ -101,6 +101,8 @@ static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr DLOG_ERR("ipcache_put_hostname: out of memory\n"); return false; } if (!ipc->hostname || strcmp(ipc->hostname,hostname)) { free(ipc->hostname); if (!(ipc->hostname = strdup(hostname))) { Loading @@ -108,6 +110,7 @@ static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr return false; } VPRINT("hostname cached: %s\n", hostname); } return true; } static bool ipcache_get_hostname(const struct in_addr *a4, const struct in6_addr *a6, char *hostname, size_t hostname_buf_len) Loading tpws/tamper.h +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ typedef struct } t_ctrack; void apply_desync_profile(t_ctrack *ctrack, const struct sockaddr *dest); bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname); void tamper_out(t_ctrack *ctrack, const struct sockaddr *dest, uint8_t *segment,size_t segment_buffer_size,size_t *size, size_t *multisplit_pos, int *multisplit_count, uint8_t *split_flags); void tamper_in(t_ctrack *ctrack, const struct sockaddr *client, uint8_t *segment,size_t segment_buffer_size,size_t *size); Loading tpws/tpws_conn.c +5 −1 Original line number Diff line number Diff line Loading @@ -494,6 +494,9 @@ static bool connect_remote_conn(tproxy_conn_t *conn) { int mss=0; if (conn->track.hostname) if (!ipcache_put_hostname(conn->dest.sa_family==AF_INET ? &((struct sockaddr_in*)&conn->dest)->sin_addr : NULL, conn->dest.sa_family==AF_INET6 ? &((struct sockaddr_in6*)&conn->dest)->sin6_addr : NULL , conn->track.hostname)) DLOG_ERR("ipcache_put_hostname: out of memory"); apply_desync_profile(&conn->track, (struct sockaddr *)&conn->dest); if (conn->track.dp && conn->track.dp->mss) Loading Loading @@ -1087,7 +1090,8 @@ static bool resolve_complete(struct resolve_item *ri, struct tailhead *conn_list if (!conn->track.hostname) { DBGPRINT("resolve_complete put hostname : %s\n", ri->dom); conn->track.hostname = strdup(ri->dom); if (!(conn->track.hostname = strdup(ri->dom))) DLOG_ERR("dup hostname: out of memory\n"); } sa46copy(&conn->dest, (struct sockaddr *)&ri->ss); return proxy_mode_connect_remote(conn,conn_list); Loading Loading
tpws/helpers.h +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ // this saves memory. sockaddr_storage is larger than required. it can be 128 bytes. sockaddr_in6 is 28 bytes. typedef union { sa_family_t sa_family; struct sockaddr_in sa4; // size 16 struct sockaddr_in6 sa6; // size 28 } sockaddr_in46; Loading
tpws/tamper.c +9 −6 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ static void TLSDebug(const uint8_t *tls,size_t sz) TLSDebugHandshake(tls+5,sz-5); } static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname) bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname) { if (!params.cache_hostname) return true; Loading @@ -101,6 +101,8 @@ static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr DLOG_ERR("ipcache_put_hostname: out of memory\n"); return false; } if (!ipc->hostname || strcmp(ipc->hostname,hostname)) { free(ipc->hostname); if (!(ipc->hostname = strdup(hostname))) { Loading @@ -108,6 +110,7 @@ static bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr return false; } VPRINT("hostname cached: %s\n", hostname); } return true; } static bool ipcache_get_hostname(const struct in_addr *a4, const struct in6_addr *a6, char *hostname, size_t hostname_buf_len) Loading
tpws/tamper.h +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ typedef struct } t_ctrack; void apply_desync_profile(t_ctrack *ctrack, const struct sockaddr *dest); bool ipcache_put_hostname(const struct in_addr *a4, const struct in6_addr *a6, const char *hostname); void tamper_out(t_ctrack *ctrack, const struct sockaddr *dest, uint8_t *segment,size_t segment_buffer_size,size_t *size, size_t *multisplit_pos, int *multisplit_count, uint8_t *split_flags); void tamper_in(t_ctrack *ctrack, const struct sockaddr *client, uint8_t *segment,size_t segment_buffer_size,size_t *size); Loading
tpws/tpws_conn.c +5 −1 Original line number Diff line number Diff line Loading @@ -494,6 +494,9 @@ static bool connect_remote_conn(tproxy_conn_t *conn) { int mss=0; if (conn->track.hostname) if (!ipcache_put_hostname(conn->dest.sa_family==AF_INET ? &((struct sockaddr_in*)&conn->dest)->sin_addr : NULL, conn->dest.sa_family==AF_INET6 ? &((struct sockaddr_in6*)&conn->dest)->sin6_addr : NULL , conn->track.hostname)) DLOG_ERR("ipcache_put_hostname: out of memory"); apply_desync_profile(&conn->track, (struct sockaddr *)&conn->dest); if (conn->track.dp && conn->track.dp->mss) Loading Loading @@ -1087,7 +1090,8 @@ static bool resolve_complete(struct resolve_item *ri, struct tailhead *conn_list if (!conn->track.hostname) { DBGPRINT("resolve_complete put hostname : %s\n", ri->dom); conn->track.hostname = strdup(ri->dom); if (!(conn->track.hostname = strdup(ri->dom))) DLOG_ERR("dup hostname: out of memory\n"); } sa46copy(&conn->dest, (struct sockaddr *)&ri->ss); return proxy_mode_connect_remote(conn,conn_list); Loading