Hi,
I have the windows binary distribution of httptunnel. I have been having connecting to a remote server, and using debug level 4, I see that httptunnel is attempting to use a socket option SO_RCVLOWAT, which is not supported on Windows platforms. According
to Microsoft (
http://msdn.microsoft.com/en-us/library/ms740532(v=vs.85).aspx) that particular socket option will return
with an error/failure. This may be a bug in the windows implementation.
The symptom is that when attempting the connection, it enters a loop (as seen in the output) but never actually completes. Below is the output.
I am not sure if it is a problem with the "clearswift" proxy gateway (which does intrusive inspection), or if it's a problem ultimately with httptunnel. I do know that other protocols (such as teamviewer) work fine through this proxy.
Here is the output.
C:\Files\httptunnel\debug>htc -D4 -w -A sparq\ag084:Password -P proxybnelb.common.local:8080 -F 8022 abcremote.dyndns.org
:80
20110729 110149 htc (httptunnel) 3.3 started with arguments:
20110729 110149 me = htc
20110729 110149 device = (null)
20110729 110149 host_name = abcremote.dyndns.org
20110729 110149 host_port = 80
20110729 110149 proxy_name = proxybnelb.common.local
20110729 110149 proxy_port = 8080
20110729 110149 proxy_buffer_size = 0
20110729 110149 proxy_buffer_timeout = -1
20110729 110149 content_length = 102400
20110729 110149 forward_port = 8022
20110729 110149 max_connection_age = 300
20110729 110149 use_std = 0
20110729 110149 strict_content_length = 0
20110729 110149 keep_alive = 5
20110729 110149 proxy_authorization = sparq\ag084:Password
20110729 110149 user_agent = (null)
20110729 110149 debug_level = 4
20110729 110149 server_socket (8022) = 3
20110729 110149 waiting for connection on port 8022
20110729 110156 wait_for_connection_on_socket (3) = 4
20110729 110156 creating a new tunnel
20110729 110156 tunnel_new_client ("abcremote.dyndns.org", 80, "proxybnelb.common.local", 8080, 102400)
20110729 110156 tunnel_connect()
20110729 110156 tunnel_out_setsockopts: non-fatal SO_SNDLOWAT error: Protocol not available
20110729 110156 tunnel_out_setsockopts: non-fatal SO_SNDLOWAT: 0
20110729 110156 tunnel_out_setsockopts: SO_LINGER: _onoff_=1 linger=2000
20110729 110156 tunnel_out_setsockopts: non-fatal TCP_NODELAY: 1
20110729 110156 tunnel_out_setsockopts: SO_KEEPALIVE: 1
20110729 110156 tunnel_out_connect: output connected
20110729 110156 tunnel_write_request: TUNNEL_OPEN (1)
20110729 110156 tunnel_in_connect()
20110729 110156 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110156 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110206 http_parse_response: major version = 1
20110729 110206 http_parse_response: minor version = 1
20110729 110206 http_parse_response: status code = 200
20110729 110206 http_parse_response: status message = "OK"
20110729 110206 parse_header: Content-Length: 102400
20110729 110206 parse_header: Pragma: no-cache
20110729 110206 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110206 parse_header: Expires: 0
20110729 110206 parse_header: Content-Type: text/html
20110729 110206 parse_header: date: Fri, 29 Jul 2011 01:01:56 GMT
20110729 110206 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110206 tunnel_in_connect: input connected
20110729 110206 connected to abcremote.dyndns.org:80 via proxybnelb.common.local:8080
20110729 110206 tunnel_read_request: connection closed by peer
20110729 110206 tunnel_in_disconnect: input disconnected
20110729 110206 tunnel_in_connect()
20110729 110206 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110206 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110217 http_parse_response: major version = 1
20110729 110217 http_parse_response: minor version = 1
20110729 110217 http_parse_response: status code = 200
20110729 110217 http_parse_response: status message = "OK"
20110729 110217 parse_header: Content-Length: 102400
20110729 110217 parse_header: Pragma: no-cache
20110729 110217 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110217 parse_header: Expires: 0
20110729 110217 parse_header: Content-Type: text/html
20110729 110217 parse_header: date: Fri, 29 Jul 2011 01:02:07 GMT
20110729 110217 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110217 tunnel_in_connect: input connected
20110729 110217 tunnel_read_request: connection closed by peer
20110729 110217 tunnel_in_disconnect: input disconnected
20110729 110217 tunnel_in_connect()
20110729 110217 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110217 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110227 http_parse_response: major version = 1
20110729 110227 http_parse_response: minor version = 1
20110729 110227 http_parse_response: status code = 200
20110729 110227 http_parse_response: status message = "OK"
20110729 110227 parse_header: Content-Length: 102400
20110729 110227 parse_header: Pragma: no-cache
20110729 110227 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110227 parse_header: Expires: 0
20110729 110227 parse_header: Content-Type: text/html
20110729 110227 parse_header: date: Fri, 29 Jul 2011 01:02:17 GMT
20110729 110227 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110227 tunnel_in_connect: input connected
20110729 110227 tunnel_read_request: connection closed by peer
20110729 110227 tunnel_in_disconnect: input disconnected
20110729 110227 tunnel_in_connect()
20110729 110227 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110227 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110237 http_parse_response: major version = 1
20110729 110237 http_parse_response: minor version = 1
20110729 110237 http_parse_response: status code = 200
20110729 110237 http_parse_response: status message = "OK"
20110729 110237 parse_header: Content-Length: 102400
20110729 110237 parse_header: Pragma: no-cache
20110729 110237 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110237 parse_header: Expires: 0
20110729 110237 parse_header: Content-Type: text/html
20110729 110237 parse_header: date: Fri, 29 Jul 2011 01:02:27 GMT
20110729 110237 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110237 tunnel_in_connect: input connected
20110729 110237 tunnel_read_request: connection closed by peer
20110729 110237 tunnel_in_disconnect: input disconnected
20110729 110237 tunnel_in_connect()
20110729 110237 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110237 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110247 http_parse_response: major version = 1
20110729 110247 http_parse_response: minor version = 1
20110729 110247 http_parse_response: status code = 200
20110729 110247 http_parse_response: status message = "OK"
20110729 110247 parse_header: Content-Length: 102400
20110729 110247 parse_header: Pragma: no-cache
20110729 110247 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110247 parse_header: Expires: 0
20110729 110247 parse_header: Content-Type: text/html
20110729 110247 parse_header: date: Fri, 29 Jul 2011 01:02:37 GMT
20110729 110247 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110247 tunnel_in_connect: input connected
20110729 110247 tunnel_read_request: connection closed by peer
20110729 110247 tunnel_in_disconnect: input disconnected
20110729 110247 tunnel_in_connect()
20110729 110247 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110247 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110257 http_parse_response: major version = 1
20110729 110257 http_parse_response: minor version = 1
20110729 110257 http_parse_response: status code = 200
20110729 110257 http_parse_response: status message = "OK"
20110729 110257 parse_header: Content-Length: 102400
20110729 110257 parse_header: Pragma: no-cache
20110729 110257 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110257 parse_header: Expires: 0
20110729 110257 parse_header: Content-Type: text/html
20110729 110257 parse_header: date: Fri, 29 Jul 2011 01:02:47 GMT
20110729 110257 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110257 tunnel_in_connect: input connected
20110729 110257 tunnel_read_request: connection closed by peer
20110729 110257 tunnel_in_disconnect: input disconnected
20110729 110257 tunnel_in_connect()
20110729 110257 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110257 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110308 http_parse_response: major version = 1
20110729 110308 http_parse_response: minor version = 1
20110729 110308 http_parse_response: status code = 200
20110729 110308 http_parse_response: status message = "OK"
20110729 110308 parse_header: Content-Length: 102400
20110729 110308 parse_header: Pragma: no-cache
20110729 110308 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110308 parse_header: Expires: 0
20110729 110308 parse_header: Content-Type: text/html
20110729 110308 parse_header: date: Fri, 29 Jul 2011 01:02:58 GMT
20110729 110308 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110308 tunnel_in_connect: input connected
20110729 110308 tunnel_read_request: connection closed by peer
20110729 110308 tunnel_in_disconnect: input disconnected
20110729 110308 tunnel_in_connect()
20110729 110308 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110308 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110318 http_parse_response: major version = 1
20110729 110318 http_parse_response: minor version = 1
20110729 110318 http_parse_response: status code = 200
20110729 110318 http_parse_response: status message = "OK"
20110729 110318 parse_header: Content-Length: 102400
20110729 110318 parse_header: Pragma: no-cache
20110729 110318 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110318 parse_header: Expires: 0
20110729 110318 parse_header: Content-Type: text/html
20110729 110318 parse_header: date: Fri, 29 Jul 2011 01:03:08 GMT
20110729 110318 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110318 tunnel_in_connect: input connected
20110729 110318 tunnel_read_request: connection closed by peer
20110729 110318 tunnel_in_disconnect: input disconnected
20110729 110318 tunnel_in_connect()
20110729 110318 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110318 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110328 http_parse_response: major version = 1
20110729 110328 http_parse_response: minor version = 1
20110729 110328 http_parse_response: status code = 200
20110729 110328 http_parse_response: status message = "OK"
20110729 110328 parse_header: Content-Length: 102400
20110729 110328 parse_header: Pragma: no-cache
20110729 110328 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110328 parse_header: Expires: 0
20110729 110328 parse_header: Content-Type: text/html
20110729 110328 parse_header: date: Fri, 29 Jul 2011 01:03:18 GMT
20110729 110328 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110328 tunnel_in_connect: input connected
20110729 110328 tunnel_read_request: connection closed by peer
20110729 110328 tunnel_in_disconnect: input disconnected
20110729 110328 tunnel_in_connect()
20110729 110328 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110328 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110338 http_parse_response: major version = 1
20110729 110338 http_parse_response: minor version = 1
20110729 110338 http_parse_response: status code = 200
20110729 110338 http_parse_response: status message = "OK"
20110729 110338 parse_header: Content-Length: 102400
20110729 110338 parse_header: Pragma: no-cache
20110729 110338 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110338 parse_header: Expires: 0
20110729 110338 parse_header: Content-Type: text/html
20110729 110338 parse_header: date: Fri, 29 Jul 2011 01:03:28 GMT
20110729 110338 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110338 tunnel_in_connect: input connected
20110729 110338 tunnel_read_request: connection closed by peer
20110729 110338 tunnel_in_disconnect: input disconnected
20110729 110338 tunnel_in_connect()
20110729 110338 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110338 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110348 http_parse_response: major version = 1
20110729 110348 http_parse_response: minor version = 1
20110729 110348 http_parse_response: status code = 200
20110729 110348 http_parse_response: status message = "OK"
20110729 110348 parse_header: Content-Length: 102400
20110729 110348 parse_header: Pragma: no-cache
20110729 110348 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110348 parse_header: Expires: 0
20110729 110348 parse_header: Content-Type: text/html
20110729 110348 parse_header: date: Fri, 29 Jul 2011 01:03:38 GMT
20110729 110348 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110348 tunnel_in_connect: input connected
20110729 110348 tunnel_read_request: connection closed by peer
20110729 110348 tunnel_in_disconnect: input disconnected
20110729 110348 tunnel_in_connect()
20110729 110348 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110348 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110359 http_parse_response: major version = 1
20110729 110359 http_parse_response: minor version = 1
20110729 110359 http_parse_response: status code = 200
20110729 110359 http_parse_response: status message = "OK"
20110729 110359 parse_header: Content-Length: 102400
20110729 110359 parse_header: Pragma: no-cache
20110729 110359 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110359 parse_header: Expires: 0
20110729 110359 parse_header: Content-Type: text/html
20110729 110359 parse_header: date: Fri, 29 Jul 2011 01:03:49 GMT
20110729 110359 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110359 tunnel_in_connect: input connected
20110729 110359 tunnel_read_request: connection closed by peer
20110729 110359 tunnel_in_disconnect: input disconnected
20110729 110359 tunnel_in_connect()
20110729 110359 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110359 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110409 http_parse_response: major version = 1
20110729 110409 http_parse_response: minor version = 1
20110729 110409 http_parse_response: status code = 200
20110729 110409 http_parse_response: status message = "OK"
20110729 110409 parse_header: Content-Length: 102400
20110729 110409 parse_header: Pragma: no-cache
20110729 110409 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110409 parse_header: Expires: 0
20110729 110409 parse_header: Content-Type: text/html
20110729 110409 parse_header: date: Fri, 29 Jul 2011 01:03:59 GMT
20110729 110409 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110409 tunnel_in_connect: input connected
20110729 110409 device or port closed
20110729 110409 tunnel_read_request: connection closed by peer
20110729 110409 tunnel_in_disconnect: input disconnected
20110729 110409 tunnel_in_connect()
20110729 110409 tunnel_in_setsockopts: non-fatal SO_RCVLOWAT error: Protocol not available
20110729 110409 tunnel_out_setsockopts: SO_RCVLOWAT: 0
20110729 110419 http_parse_response: major version = 1
20110729 110419 http_parse_response: minor version = 1
20110729 110419 http_parse_response: status code = 200
20110729 110419 http_parse_response: status message = "OK"
20110729 110419 parse_header: Content-Length: 102400
20110729 110419 parse_header: Pragma: no-cache
20110729 110419 parse_header: Cache-Control: no-cache, no-store, must-revalidate
20110729 110419 parse_header: Expires: 0
20110729 110419 parse_header: Content-Type: text/html
20110729 110419 parse_header: date: Fri, 29 Jul 2011 01:04:09 GMT
20110729 110419 parse_header: Via: 1.1 Clearswift SECURE Web Gateway
20110729 110419 tunnel_in_connect: input connected
20110729 110419 destroying tunnel
20110729 110419 tunnel_close: write TUNNEL_CLOSE request
20110729 110419 tunnel_write_request: TUNNEL_CLOSE
20110729 110419 tunnel_out_disconnect: warning: bytes=5 != content_length=102400
20110729 110419 tunnel_out_disconnect: output disconnected
20110729 110419 tunnel_close: reading trailing data from input ...
20110729 110419 tunnel_close: ... done (tunnel closed)
20110729 110419 tunnel_in_disconnect: input disconnected
20110729 110419 disconnected from abcremote.dyndns.org:80 via proxybnelb.common.local:8080
20110729 110419 waiting for connection on port 8022
Andrew Gray
Senior Software Specialist
Corporate Data Systems
SPARQ Solutions
Ph 07 3003 3169 | Fax 07 3003 3907
25 Montpelier Road
Bowen Hills, Brisbane, Qld 4006
E-Mail andrew.gray@sparq.com.au