inconshreveable / ngrok Goto Github PK
View Code? Open in Web Editor NEWUnified ingress for developers
Home Page: https://ngrok.com
License: Other
Unified ingress for developers
Home Page: https://ngrok.com
License: Other
Stack trace of crash: https://gist.github.com/nodje/6373558
Related termbox issue: nsf/termbox#4
The termbox issue is only about running termbox inside of linux after you ssh in from a cygwin shell. More investigation is needed.
After your reply i starting test the version 1.3. I have created an account and auth_token and follow the steps on documentation. But none of the options, default ngrok file or an yaml file reads the auth_token. Even i tried to put the auth_token as a parameter on ngrok but i cannot have the subdomain registered. Did you tested this version 1.3 with this? The old version works perfects.
install via a pkg, or homebrew, or explain how to cd places, etc.
sorry i know this is basic stuff, just running into this with people who are fairly new to the terminal :)
It would be great to have a --speed switch, or similar, which throttles throughput, so that ngrok could be used to replicate slow connections.
(Currenlty I use Sloppy https://github.com/d6y/sloppy) but it'd be great to roll the behaviour into ngrok and do away with a separate Java app)
Hi,
Ngrok client is currently unable to connect to self-hosted Ngrokd (one not hosted on ngrok.com) since during TLS setup the servername to check on the server's certificate is hardcoded to "ngrokd.ngrok.com". (client/tls.go)
Is is possible to insert variables (like perhaps env variables) into the config?
I'd like to do something like the following to prevent collisions and standardize a config file I could check into source control for my project:
tunnels:
client:
subdomain: "<%= ENV['user'] %>-myapp"
proto:
http: 80
Or is there a better way to accomplish this?
It would be very nice if the web UI could show a list of all active tunnels.
Reason: I want to be able to login remotely (through ngrok) to see the ngrok.com domains and ports to which my tunnels are currently bound.
I've just downloaded both OSX and Windows version to try out ngrok.
Both start as expected but when I try to access the public address, I get a
Unable to initiate connection to 127.0.0.1:8080
error on both versions.
And to confirm this telnet won't find the port open on 127.0.0.1.
Is there something more specific to do ?
As a side note, I got a weird error when running ngrok from a cygwin term. Could be a path problem. Should you be interested please let me know, I'd create a gist for you.
You have two differents releases. On your site it is amd_64 and this don't run on osx lion, and here on github you have darwin? The release from your site runs but can connect and don't give you the forward link stay always connecting.
Thanks for your work.
The Go libraries ngrok uses to parse and dump http requests does some normalization of the requests it handles which causes the dumped requests to not always match the originals.
Example:
All HTTP/1.0 requests become HTTP/1.1 requests
Requests without a host header are dumped with a host header
Fix ngrok to always dump requests that are exactly the same as the originals.
Hello,
I came across ngrok and I really like this tool.
I would like to be able to share my terminal with someone else using pssh (https://github.com/portly/pssh).
This exposes a service on port 8022 by default.
I tried to open an http tunnel but a browser doesn't seem to display this.
When I use tcp protocol on port 8022, I am able to display my terminal with 127.0.0.1:8022, but obviously not from anywhere else...
Am I using it wrong ? Or is my use case not supported ?
Thanks in advance.
Regards.
Hi there, I don't know if this is a bug or not.
I can't seem to get a continuos connection, even after ^C
and start ngrok again I get "reconnecting" in red.
I want to have a private SSH-git repo, but with this seem unfeasible because I need to check almost each time if the tunnel is connected or not.
The change of "port" one time or another could be no issue... but the "stability" of the connection seems like no working more than some hours... or perhaps minutes... :S.
So this is a NO, NO.
Is there anyone having this connection problems?
/////////////////////////////////////////////
Extra info
Accessing my page I get Tunnel xyz.xyz.com not found
and on the client I see Tunnel status reconnecting
. For me it looks like it is 90% of the time, my site doesn't get continuos connections perhaps one after some ours (or days) via HTTP and other time via SSH-git.
/////////////////////////////////////////////
Even one time I started the client I did get
/////////////////////////////////////////////
Also the server is running all day on a VM at home.
When paths are too long in the ngrok terminal UI, the status codes get written over them which looks really confusing.
The reason it's failing sometimes on startup is because it's try to generate a secure random number to use as a seed value for the pRNG. This calls into the operating system and will fail if there isn't much entropy which is common right after system boot. Ideally it should just wait for more entropy instead of dying.
I have just downloaded ngrok and try to run it behind a corporate proxy. The console log does not show any url that is forwarded to the local service. Could anyone please confirm if this works behind a proxy?
Console output :
ngrok
Tunnel Status connecting
Version 0.14/
Protocol http
Forwarding -> 127.0.0.1:80
Web Interface http://localhost:4040
# Conn 0
Avg Conn Time 0.00ms
https://ngrok.com/login/github gives me a 500 error, as well as the "Sign up with Github" form
could point to a place where you could get help, quickstart etc
Support showing messages passed over active websocket connections in the web interface.
Doing reply on a request does not copy POST params. New request is sent without a POST body.
Are they any plans to package ngrok?
Installing it seems to be the only hurdle to adoption right now - downloading a file, unzipping and installing it seems so.. 90s.
Would love it if I could install this through Apt or Homebrew!
I'm trying to send an OAuth call through ngrok, which already contains an Authorization header - and I can't find a way to get around the "Authorization Required" response.
I'm not specifying the httpauth argument on the command line, and I haven't filled in anything for it on the website. I also tried explicitly passing "" for it on the command line, but to no avail.
I noticed this code, which seems to attempt to account for it:
ngrok/src/ngrok/server/http.go
Line 82 in bd33560
./ngrok 8600
Tunnel Status online
Version 0.15/0.8
Protocol http
Forwarding http://5fdbb3a5.ngrok.com -> 127.0.0.1:8600
Web Interface http://localhost:4040
# Conn 1
Avg Conn Time 30.82ms
curl http://5fdbb3a5.ngrok.com
debug response
url -H 'Authorization: test' http://5fdbb3a5.ngrok.com
Authorization required
When unziping ngrok, the resulting file isn't executable.
srinivas@ubuntu:~/workspace/go_space/ngrok$ make
go fmt ngrok/...
go get -tags '' -d -v ngrok/...
go install -tags '' ngrok/main/ngrok
src/ngrok/client/views/term/http.go:49: method v.Run is not an expression, must be called
src/ngrok/client/views/term/view.go:40: method v.run is not an expression, must be called
src/ngrok/client/views/term/view.go:41: method v.input is not an expression, must be called
src/ngrok/client/views/web/http.go:87: method whv.updateHttp is not an expression, must be called
make: *** [client] Error 2
Please add a field for default custom domain on the website, like there is for default custom subdomian.
The summary of the response body doesn't update when I select different responses. All the other fields (i.e., response size, headers, raw, binary) all do update.
Here's a screenshot to show what I mean. Note that although a good request is selected, the response body summary that's shown is for the 404 response that had been previously selected.
arthur@draco:~/local/ngrok$ make
go fmt ngrok/...
go get -tags '' -d -v ngrok/...
code.google.com/p/log4go (download)
github.com/garyburd/go-websocket (download)
github.com/inconshreveable/go-metrics (download)
github.com/nsf/termbox-go (download)
go install -tags '' ngrok/main/ngrok
go install -tags '' ngrok/main/ngrokd
# ngrok/cache
src/ngrok/cache/lru.go:174: function ends without a return statement
src/ngrok/cache/lru.go:204: function ends without a return statement
make: *** [server] Error 2
on ubuntu with golang 2:1-5 . Sorry don't really know go language.
Hi,
to support self-hosted ngrok deployments it would be nice to support alternative way of server validation in client. Currently client is capable only of verification through the usual CA cert chain; it would be nice to allow verification by specifying server's cert thumbprint as alternative to that (this would allow usage of self-signed certificates without need to add local CA cert into client's chain).
Is it possible to use ngrok with virtualhosts that I set up with MAMP?
For example to get achieve this:
Forwarding https://*******.ngrok.com -> project1.dev:80
Thanks!
I'm using a private key and wildcard certificate issued for my domain by godaddy.
$ sudo bin/ngrokd -domain="mydomain.ru" -tlsCrt="/home/jdoe/keys/mydomain.ru.crt" -tlsKey="/home/jdoe/keys/mydomain.ru.key"
Ngrokd starts normally, though on a client I have the following error:
[EROR] control recovering from failure x509: certificate signed by unknown authority
I run the client with the following options:
$ ngrok -log=stdout start charlie
Here is the contents of my .ngrok file:
server_addr: ngrok.mydomain.ru:4443
trust_host_root_certs: true
tunnels:
charlie:
proto:
http: 5000
I tried to compile ngrok on an ARM based machine. It compiled, but at runtime gave me these errors:
panic: open assets/client/tls/ngrokroot.crt: no such file or directory
goroutine 1 [running]:
ngrok/client.init·1()
/home/jacob/ngrok/src/ngrok/client/tls.go:19 +0x120
ngrok/client.init()
/home/jacob/ngrok/src/ngrok/client/update_debug.go:11 +0x114
main.init()
/home/jacob/ngrok/src/ngrok/main/ngrok/ngrok.go:9 +0x74
goroutine 3 [chan receive]:
code.google.com/p/log4go.ConsoleLogWriter.run(0x10840000, 0xb6d66180, 0x108000a0)
/home/jacob/ngrok/src/code.google.com/p/log4go/termlog.go:27 +0x60
created by code.google.com/p/log4go.NewConsoleLogWriter
/home/jacob/ngrok/src/code.google.com/p/log4go/termlog.go:19 +0x88
goroutine 4 [runnable]:
os/signal.loop()
/home/jacob/go/src/pkg/os/signal/signal_unix.go:19
created by os/signal.init·1
/home/jacob/go/src/pkg/os/signal/signal_unix.go:27 +0x48
Is there anyway I can get this to work?
Hey guys!
Love this application!
The only thing which would make it even more killer is the addition of the ability to not just replay data, but to edit the data before it is replayed. That would make debugging APIs with webhooks vastly easier, as it wouldn't depend on the 3rd party service!
Thanks so much!,
I am running ngrok in a vagrant box via puppet and it seems to error out when I start the service which I assume is because of the interface being returned. It would be great to run ngrok --daemon 80
or --silent
which would only return a 0 status if successful or the error. If such an option does already exist I didnt see it on the help pages or in the code anywhere.
It should at least work on modern, standards-compliant IE versions like IE10+, maybe IE9. My hunch is that at least one issue is that those versions of IE don't support WebSocket.
maybe via package managers so it's common
On the features page it is said that "ngrok supports tunnelling at the TCP and UDP layer so you can expose any type of networked service to the internet".
However -proto="udp" is not supported and trying to send UDP messages to a TCP tunnel fails with "Failed to open private leg 127.0.0.1:6002: dial tcp 127.0.0.1:6002: connection refused" while having a server listening for incoming UDP packets.
I am under a HTTP Proxy. First start, ngrok works properly however the socket sometimes disconnects and displays a message about "keepalive"
The few features I miss is the ability to have project-wise config files containing the tunnels that need to be initiated for the project.
For instance, in my project directory I have next:
# ngrok config, load using: ngrok -config ngrok.yaml start default
tunnels:
default:
hostname: "project.example.com"
proto:
http: 80
What currently stops me to do this is that:
~/.ngrok
config file and a custom one, and allowing my personal auth_token to appear in my repo is something I'd rather not do.*.dev.example.com
My current fix:
alias ngrok="ngrok -authtoken $(cat ~/.ngrok |cut -d' ' -f2-)"
alias localtunnel="ngrok -config ngrok.yaml start default"
The only drawbacks are I need to both setup a vhost (which in my case is just a symlink, but that depends on how your development environment is setup, and add the hostname to my ngrok dashboard, which so far is the main annoyance for me.
Hey guys,
ngrok is amazing! Have run into a problem though. Have googled but nothing.
I'm developing a site using XAMPP.
When I run $ ngrock 80
and check the site with my forwarding domain (https://mydomain.ngrok.com) it redirects to https://mydomain.ngrok.com/xampp and works fine.
But when I try to access my site (located in the htdocs folder under XAMPP) via https://mydomain.ngrok.com/www/ the URL resolves to 127.0.0.1/www/
which works on my local machine but when testing on my other devices it cannot connect to the server.
Any ideas?
Sorry for the terrible formatting, the curses view causes this. After a few requests, I tried to refresh the page.
2013/04/26 02:25:42 http: panic serving [::1]:63029: template: page.html:74:52: executing "page.html" at <dumpRequest .>: error calling dumpRequest: http: no Host in request URL
goroutine 122 [running]:
net/http.func·007()
/usr/local/go/src/pkg/net/http/server.go:1022 +0xac
ngrok/client/views/web.func·008(0xc20010cac0, 0xc2002b6e70, 0xc200305dd0)
/Users/kyle/projects/ngrok/src/ngrok/client/views/web/http.go:187 +0x363
net/http.HandlerFunc.ServeHTTP(0xc2000c7740, 0xc20010cac0, 0xc2002b6e70, 0xc200305dd0)
/usr/local/go/src/pkg/net/http/server.go:1149 +0x3e
net/http.(*ServeMux).ServeHTTP(0xc2000a6570, 0xc20010cac0, 0xc2002b6e70, 0xc200305dd0)
/usr/local/go/src/pkg/net/http/server.go:1416 +0x11d
net/http.serverHandler.ServeHTTP(0xc2000c4780, 0xc20010cac0, 0xc2002b6e70, 0xc200305dd0)
/usr/local/go/src/pkg/net/http/server.go:1517 +0x16c
net/http.(*conn).serve(0xc200302120)
/usr/local/go/src/pkg/net/http/server.go:1096 +0x765
created by net/http.(*Server).Serve
/usr/local/go/src/pkg/net/http/server.go:1564 +0x266
Would be nice to have a headless mode so I can run my proxies in foreman.
Reporting tweet: https://twitter.com/togakangaroo/status/371815157292224512
I've noticed the tags are a bit behind of what the current version is can we add some tags for the missing versions?
I'll start off with the latest version.
677ea6a => 0.21
I'm behind company firewall, and it used to work fine. But today I'm stuck on reconnecting and got this on the log
[2013/12/16 10:02:59 EST] [INFO] (ngrok/log.Info:89) Reading configuration file C:\Users\myusername/.ngrok
[2013/12/16 10:02:59 EST] [INFO] (ngrok/log.(*PrefixLogger).Info:60) [view] [web] Serving web interface on 127.0.0.1:4040
[2013/12/16 10:02:59 EST] [INFO] (ngrok/log.Info:89) Checking for update
[2013/12/16 10:02:59 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:02:59 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:748f6687] New connection to: 96.126.125.171:443
[2013/12/16 10:02:59 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:748f6687] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:00 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:748f6687] Closing
[2013/12/16 10:03:00 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:00 EST] [INFO] (ngrok/log.Info:89) Waiting 1 seconds before reconnecting
[2013/12/16 10:03:00 EST] [INFO] (ngrok/log.Info:89) No update available
[2013/12/16 10:03:01 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:03:01 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:3c0484a7] New connection to: 96.126.125.171:443
[2013/12/16 10:03:01 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:3c0484a7] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:01 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:3c0484a7] Closing
[2013/12/16 10:03:01 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:01 EST] [INFO] (ngrok/log.Info:89) Waiting 2 seconds before reconnecting
[2013/12/16 10:03:03 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:03:03 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:11aa77d4] New connection to: 96.126.125.171:443
[2013/12/16 10:03:03 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:11aa77d4] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:03 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:11aa77d4] Closing
[2013/12/16 10:03:03 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:03 EST] [INFO] (ngrok/log.Info:89) Waiting 4 seconds before reconnecting
[2013/12/16 10:03:07 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:03:07 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:49cc7192] New connection to: 96.126.125.171:443
[2013/12/16 10:03:07 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:49cc7192] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:07 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:49cc7192] Closing
[2013/12/16 10:03:07 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:07 EST] [INFO] (ngrok/log.Info:89) Waiting 8 seconds before reconnecting
[2013/12/16 10:03:15 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:03:15 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:34b6e835] New connection to: 96.126.125.171:443
[2013/12/16 10:03:15 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:34b6e835] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:15 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:34b6e835] Closing
[2013/12/16 10:03:15 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:15 EST] [INFO] (ngrok/log.Info:89) Waiting 16 seconds before reconnecting
[2013/12/16 10:03:31 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [view] [term] Waiting for update
[2013/12/16 10:03:32 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:27e74ed9] New connection to: 96.126.125.171:443
[2013/12/16 10:03:32 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:27e74ed9] Writing message: {"Type":"Auth","Payload":{"Version":"2","MmVersion":"1.6","User":"","Password":"","OS":"windows","Arch":"386","ClientId":""}}
[2013/12/16 10:03:32 EST] [DEBG] (ngrok/log.(*PrefixLogger).Debug:56) [ctl:27e74ed9] Closing
[2013/12/16 10:03:32 EST] [EROR] (ngrok/log.Error:97) control recovering from failure EOF
[2013/12/16 10:03:32 EST] [INFO] (ngrok/log.Info:89) Waiting 30 seconds before reconnecting
[2013/12/16 10:03:32 EST] [INFO] (ngrok/log.(*PrefixLogger).Info:60) [view] [term] Got quit command
[2013/12/16 10:03:32 EST] [INFO] (ngrok/log.(*PrefixLogger).Info:60) [controller] Shutting down
Ngrok still works outside of the firewall, so this seems isolated. What bothers me is the weird "control recovering from failure EOF" error. Does that mean the firewall block it? Or is it something else? I can help debug using wireshark if someone tell me what to look.
On some event data I get from Github it was truncated in the raw request and binary views. The truncated raw body was ~8179 characters. Stops the JSON linting from happening.
My HTTP server replied to a request with Content-Type: text/xml
but no HTTP body.
[07/23/13 17:18:52] [DEBG] Reading auth token from file /Users/chadrs/.ngrok
[07/23/13 17:18:52] [WARN] Failed to read ~/.ngrok for auth token: open /Users/chadrs/.ngrok: no such file or directory
[07/23/13 17:18:52] [INFO] Serving web interface on localhost:4040
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] New connection to: 173.255.204.192:4443
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] Writing message: {"Type":"RegMsg","Payload":{"Version":"1","MmVersion":"0.14","Protocol":"http","Hostname":"","Subdomain":"","ClientId":"ff6b661fbcff4aa8","HttpAuth":"","User":"","Password":"","OS":"darwin","Arch":""}}
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] Waiting to read message
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] Reading message with length: 139
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] Read message {"Type":"RegAckMsg","Payload":{"Version":"1","MmVersion":"0.8","Url":"http://7b964c92.ngrok.com","ProxyAddr":"ngrok.com:48653","Error":""}}
[07/23/13 17:18:52] [INFO] [ctl:4d658221] Tunnel established at http://7b964c92.ngrok.com
[07/23/13 17:18:52] [DEBG] [ctl:4d658221] Waiting to read message
[07/23/13 17:19:06] [DEBG] [ctl:4d658221] Reading message with length: 35
[07/23/13 17:19:06] [DEBG] [ctl:4d658221] Read message {"Type":"ReqProxyMsg","Payload":{}}
[07/23/13 17:19:06] [DEBG] [ctl:4d658221] Waiting to read message
[07/23/13 17:19:07] [DEBG] [pxy:78629a0f] New connection to: 173.255.204.192:48653
[07/23/13 17:19:07] [DEBG] [pxy:78629a0f] Writing message: {"Type":"RegProxyMsg","Payload":{"Url":"http://7b964c92.ngrok.com"}}
[07/23/13 17:19:07] [DEBG] [prv:55104dc7] New connection to: 127.0.0.1:7000
[07/23/13 17:19:07] [INFO] [prv:55104dc7] Joined with connection pxy:78629a0f
panic: interface conversion: error is *errors.errorString, not *xml.SyntaxError
goroutine 41 [running]:
ngrok/client/views/web.makeBody(0x115a52a0, 0x115b5400, 0x0, 0x200, 0x43c, ...)
/Users/aes/src/ngrok/src/ngrok/client/views/web/http.go:119 +0x390
ngrok/client/views/web.(*WebHttpView).updateHttp(0x114f5ce0)
/Users/aes/src/ngrok/src/ngrok/client/views/web/http.go:196 +0x667
created by ngrok/client/views/web.NewWebHttpView
/Users/aes/src/ngrok/src/ngrok/client/views/web/http.go:86 +0x11a
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0x115131c0)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/zsema_darwin_386.c:165 +0x2f
sync.(*WaitGroup).Wait(0x114f5a80)
/usr/local/Cellar/go/1.1.1/src/pkg/sync/waitgroup.go:109 +0xd7
ngrok/client.Main()
/Users/aes/src/ngrok/src/ngrok/client/main.go:333 +0x2a4
main.main()
/Users/aes/src/ngrok/src/ngrok/main/ngrok/ngrok.go:8 +0x19
goroutine 2 [syscall]:
goroutine 4 [chan receive]:
code.google.com/p/log4go.ConsoleLogWriter.run(0x11499000, 0x1146e500, 0x11407098)
/Users/aes/src/ngrok/src/code.google.com/p/log4go/termlog.go:27 +0x60
created by code.google.com/p/log4go.NewConsoleLogWriter
/Users/aes/src/ngrok/src/code.google.com/p/log4go/termlog.go:19 +0x60
goroutine 5 [syscall]:
os/signal.loop()
/usr/local/Cellar/go/1.1.1/src/pkg/os/signal/signal_unix.go:21 +0x1c
created by os/signal.init·1
/usr/local/Cellar/go/1.1.1/src/pkg/os/signal/signal_unix.go:27 +0x2f
goroutine 6 [chan receive]:
code.google.com/p/log4go.ConsoleLogWriter.run(0x114992c0, 0x1146e500, 0x11407098)
/Users/aes/src/ngrok/src/code.google.com/p/log4go/termlog.go:27 +0x60
created by code.google.com/p/log4go.NewConsoleLogWriter
/Users/aes/src/ngrok/src/code.google.com/p/log4go/termlog.go:19 +0x60
goroutine 8 [select]:
github.com/inconshreveable/go-metrics.(*StandardMeter).arbiter(0x11493e50)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:87 +0x3a1
created by github.com/inconshreveable/go-metrics.NewMeter
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:43 +0xb5
goroutine 9 [select]:
github.com/inconshreveable/go-metrics.(*ExpDecaySample).arbiter(0x114f58a0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:119 +0xb24
created by github.com/inconshreveable/go-metrics.NewExpDecaySample
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:47 +0xcb
goroutine 10 [select]:
github.com/inconshreveable/go-metrics.(*StandardHistogram).arbiter(0x114f58c0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:156 +0x33b
created by github.com/inconshreveable/go-metrics.NewHistogram
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:50 +0xc7
goroutine 11 [select]:
github.com/inconshreveable/go-metrics.(*StandardMeter).arbiter(0x11493e60)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:87 +0x3a1
created by github.com/inconshreveable/go-metrics.NewMeter
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:43 +0xb5
goroutine 12 [select]:
github.com/inconshreveable/go-metrics.(*ExpDecaySample).arbiter(0x114f58e0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:119 +0xb24
created by github.com/inconshreveable/go-metrics.NewExpDecaySample
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:47 +0xcb
goroutine 13 [select]:
github.com/inconshreveable/go-metrics.(*StandardHistogram).arbiter(0x114f5900)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:156 +0x33b
created by github.com/inconshreveable/go-metrics.NewHistogram
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:50 +0xc7
goroutine 14 [select]:
github.com/inconshreveable/go-metrics.(*StandardMeter).arbiter(0x11493e80)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:87 +0x3a1
created by github.com/inconshreveable/go-metrics.NewMeter
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:43 +0xb5
goroutine 15 [select]:
github.com/inconshreveable/go-metrics.(*ExpDecaySample).arbiter(0x114f5920)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:119 +0xb24
created by github.com/inconshreveable/go-metrics.NewExpDecaySample
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:47 +0xcb
goroutine 16 [select]:
github.com/inconshreveable/go-metrics.(*StandardHistogram).arbiter(0x114f5940)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:156 +0x33b
created by github.com/inconshreveable/go-metrics.NewHistogram
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:50 +0xc7
goroutine 17 [select]:
github.com/inconshreveable/go-metrics.(*ExpDecaySample).arbiter(0x114f5960)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:119 +0xb24
created by github.com/inconshreveable/go-metrics.NewExpDecaySample
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:47 +0xcb
goroutine 18 [select]:
github.com/inconshreveable/go-metrics.(*StandardHistogram).arbiter(0x114f5980)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:156 +0x33b
created by github.com/inconshreveable/go-metrics.NewHistogram
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:50 +0xc7
goroutine 19 [select]:
ngrok/util.func·001()
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:20 +0x2dc
created by ngrok/util.NewBroadcast
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:42 +0x120
goroutine 20 [select]:
github.com/inconshreveable/go-metrics.(*StandardMeter).arbiter(0x11493ea0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:87 +0x3a1
created by github.com/inconshreveable/go-metrics.NewMeter
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:43 +0xb5
goroutine 21 [select]:
github.com/inconshreveable/go-metrics.(*ExpDecaySample).arbiter(0x114f5a00)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:119 +0xb24
created by github.com/inconshreveable/go-metrics.NewExpDecaySample
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/sample.go:47 +0xcb
goroutine 22 [select]:
github.com/inconshreveable/go-metrics.(*StandardHistogram).arbiter(0x114f5a20)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:156 +0x33b
created by github.com/inconshreveable/go-metrics.NewHistogram
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/histogram.go:50 +0xc7
goroutine 23 [select]:
github.com/inconshreveable/go-metrics.(*StandardMeter).arbiter(0x11493eb0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:87 +0x3a1
created by github.com/inconshreveable/go-metrics.NewMeter
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/meter.go:43 +0xb5
goroutine 24 [select]:
ngrok/util.func·001()
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:20 +0x2dc
created by ngrok/util.NewBroadcast
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:42 +0x120
goroutine 25 [select]:
ngrok/util.func·001()
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:20 +0x2dc
created by ngrok/util.NewBroadcast
/Users/aes/src/ngrok/src/ngrok/util/broadcast.go:42 +0x120
goroutine 26 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5ae0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 27 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5b00)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 28 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5b20)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 29 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5b40)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 30 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5b60)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 31 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5b80)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 32 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5ba0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 33 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5bc0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 34 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5be0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 35 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5c00)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 36 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5c20)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 37 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5c40)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 38 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5c60)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 39 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5c80)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 40 [select]:
github.com/inconshreveable/go-metrics.(*StandardEWMA).arbiter(0x114f5ca0)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:73 +0x148
created by github.com/inconshreveable/go-metrics.NewEWMA
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/ewma.go:33 +0xab
goroutine 42 [select]:
ngrok/client/views/web.(*WebHttpView).updateUiState(0x114f5ce0)
/Users/aes/src/ngrok/src/ngrok/client/views/web/http.go:218 +0xd1
created by ngrok/client/views/web.NewWebHttpView
/Users/aes/src/ngrok/src/ngrok/client/views/web/http.go:87 +0x12f
goroutine 43 [IO wait]:
net.runtime_pollWait(0x4f4f30, 0x72, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/znetpoll_darwin_386.c:118 +0x6f
net.(*pollDesc).WaitRead(0x114905ec, 0x23, 0x114f57a0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_poll_runtime.go:75 +0x30
net.(*netFD).accept(0x114905a0, 0x2ad098, 0x0, 0x114f57a0, 0x23, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_unix.go:385 +0x205
net.(*TCPListener).AcceptTCP(0x11513230, 0xc, 0x11536008, 0x86de0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/tcpsock_posix.go:229 +0x3f
net.(*TCPListener).Accept(0x11513230, 0x0, 0x0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/tcpsock_posix.go:239 +0x26
net/http.(*Server).Serve(0x11517c60, 0x114f5e20, 0x11513230, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/http/server.go:1542 +0x6a
net/http.(*Server).ListenAndServe(0x11517c60, 0x11517c60, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/http/server.go:1532 +0x81
net/http.ListenAndServe(0x115131b0, 0x5, 0x0, 0x0, 0x1, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/http/server.go:1597 +0x58
created by ngrok/client/views/web.NewWebView
/Users/aes/src/ngrok/src/ngrok/client/views/web/view.go:65 +0x221
goroutine 44 [IO wait]:
net.runtime_pollWait(0x4f4ec4, 0x72, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/znetpoll_darwin_386.c:118 +0x6f
net.(*pollDesc).WaitRead(0x1149068c, 0x23, 0x114f57a0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_poll_runtime.go:75 +0x30
net.(*netFD).Read(0x11490640, 0x11549000, 0x400, 0x400, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_unix.go:195 +0x20b
net.(*conn).Read(0x11407188, 0x11549000, 0x400, 0x400, 0x2d26e, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/net.go:123 +0xa6
crypto/tls.(*block).readFromUntil(0x11548260, 0x114f5800, 0x11407188, 0x5, 0x11407188, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:401 +0x96
crypto/tls.(*Conn).readRecord(0x114f4300, 0x17, 0x0, 0x21a3e0)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:481 +0xbc
crypto/tls.(*Conn).Read(0x114f4300, 0x1156f388, 0x8, 0x8, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:796 +0xc5
ngrok/conn.(*tcpConn).Read(0x114f5140, 0x1156f388, 0x8, 0x8, 0x8, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:0 +0x53
io.ReadAtLeast(0x11560620, 0x114f5140, 0x1156f388, 0x8, 0x8, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:284 +0xae
io.ReadFull(0x11560620, 0x114f5140, 0x1156f388, 0x8, 0x8, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:302 +0x5a
encoding/binary.Read(0x11560620, 0x114f5140, 0x11517f00, 0x114f5140, 0x1b2580, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/encoding/binary/binary.go:136 +0xbe
ngrok/msg.readMsgShared(0x114906e0, 0x114f5140, 0x0, 0x0, 0x0, ...)
/Users/aes/src/ngrok/src/ngrok/msg/conn.go:14 +0x11b
ngrok/msg.ReadMsg(0x114906e0, 0x114f5140, 0x0, 0x0, 0x0, ...)
/Users/aes/src/ngrok/src/ngrok/msg/conn.go:37 +0x4e
ngrok/client.control(0x114965c0, 0x11493ed0)
/Users/aes/src/ngrok/src/ngrok/client/main.go:246 +0x557
ngrok/client.reconnectingControl(0x114965c0, 0x11493ed0)
/Users/aes/src/ngrok/src/ngrok/client/main.go:168 +0x5b
created by ngrok/client.Main
/Users/aes/src/ngrok/src/ngrok/client/main.go:300 +0x201
goroutine 45 [chan receive]:
ngrok/client.versionCheck(0x114965c0, 0x11493ed0)
/Users/aes/src/ngrok/src/ngrok/client/main.go:119 +0x75
created by ngrok/client.Main
/Users/aes/src/ngrok/src/ngrok/client/main.go:301 +0x222
goroutine 46 [chan receive]:
ngrok/client.func·007()
/Users/aes/src/ngrok/src/ngrok/client/main.go:309 +0x77
created by ngrok/client.Main
/Users/aes/src/ngrok/src/ngrok/client/main.go:331 +0x291
goroutine 52 [semacquire]:
sync.runtime_Semacquire(0x11579ba8)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/zsema_darwin_386.c:165 +0x2f
sync.(*Cond).Wait(0x114f67a4)
/usr/local/Cellar/go/1.1.1/src/pkg/sync/cond.go:74 +0x8b
io.(*pipe).read(0x114f6780, 0x115b2000, 0x1000, 0x1000, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/pipe.go:52 +0x17b
io.(*PipeReader).Read(0x11579a30, 0x115b2000, 0x1000, 0x1000, 0x1, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/pipe.go:130 +0x50
bufio.(*Reader).fill(0x1159b120)
/usr/local/Cellar/go/1.1.1/src/pkg/bufio/bufio.go:79 +0xe3
bufio.(*Reader).ReadSlice(0x1159b120, 0x115b200a, 0x0, 0x0, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/bufio/bufio.go:262 +0x17a
bufio.(*Reader).ReadLine(0x1159b120, 0x0, 0x0, 0x0, 0x4d2000, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/bufio/bufio.go:293 +0x58
net/textproto.(*Reader).readLineSlice(0x1157af40, 0x8, 0x1c912, 0x1159a150, 0x22e5a0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/textproto/reader.go:55 +0x4c
net/textproto.(*Reader).ReadLine(0x1157af40, 0x1159a150, 0x1, 0x1, 0x1088f7, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/textproto/reader.go:36 +0x26
net/http.ReadRequest(0x1159b120, 0x1159a150, 0x0, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/http/request.go:510 +0x66
ngrok/proto.(*Http).readRequests(0x114f5a40, 0x11572f30, 0x11572f60)
/Users/aes/src/ngrok/src/ngrok/proto/http.go:67 +0x32
created by ngrok/proto.(*Http).WrapConn
/Users/aes/src/ngrok/src/ngrok/proto/http.go:60 +0x7b
goroutine 51 [chan receive]:
ngrok/conn.Join(0x115922d0, 0x11572f30, 0x114906e0, 0x11560920, 0x11572f30, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:124 +0x1c7
ngrok/client.func·002()
/Users/aes/src/ngrok/src/ngrok/client/main.go:81 +0xa7
github.com/inconshreveable/go-metrics.(*StandardTimer).Time(0x11493e70, 0x1157ae80)
/Users/aes/src/ngrok/src/github.com/inconshreveable/go-metrics/timer.go:105 +0x48
ngrok/client.proxy(0x1155d360, 0xf, 0x114965c0, 0x11493ed0)
/Users/aes/src/ngrok/src/ngrok/client/main.go:86 +0x68d
created by ngrok/client.control
/Users/aes/src/ngrok/src/ngrok/client/main.go:252 +0x79e
goroutine 50 [select]:
ngrok/client.heartbeat(0x1156f188, 0x114906e0, 0x114f5140)
/Users/aes/src/ngrok/src/ngrok/client/main.go:139 +0x65f
created by ngrok/client.control
/Users/aes/src/ngrok/src/ngrok/client/main.go:241 +0x532
goroutine 53 [chan receive]:
ngrok/proto.(*Http).readResponses(0x114f5a40, 0x11572f30, 0x11572f60)
/Users/aes/src/ngrok/src/ngrok/proto/http.go:94 +0x2e
created by ngrok/proto.(*Http).WrapConn
/Users/aes/src/ngrok/src/ngrok/proto/http.go:61 +0xa0
goroutine 54 [IO wait]:
net.runtime_pollWait(0x4f4e58, 0x72, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/znetpoll_darwin_386.c:118 +0x6f
net.(*pollDesc).WaitRead(0x11490d6c, 0x23, 0x114f57a0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_poll_runtime.go:75 +0x30
net.(*netFD).Read(0x11490d20, 0x11575000, 0x400, 0x400, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_unix.go:195 +0x20b
net.(*conn).Read(0x1156f470, 0x11575000, 0x400, 0x400, 0x9, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/net.go:123 +0xa6
crypto/tls.(*block).readFromUntil(0x11560a80, 0x114f5800, 0x1156f470, 0x5, 0x1156f470, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:401 +0x96
crypto/tls.(*Conn).readRecord(0x114f4900, 0x17, 0x0, 0xdb5b0)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:481 +0xbc
crypto/tls.(*Conn).Read(0x114f4900, 0x1159d000, 0x8000, 0x8000, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/crypto/tls/conn.go:796 +0xc5
ngrok/conn.(*tcpConn).Read(0x11560920, 0x1159d000, 0x8000, 0x8000, 0x282, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:0 +0x53
io.Copy(0x1157af00, 0x11578fe0, 0x11560620, 0x11560920, 0x282, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:348 +0x172
ngrok/conn.(*Tee).ReadFrom(0x11572f30, 0x11560620, 0x11560920, 0x0, 0x0, ...)
/Users/aes/src/ngrok/src/ngrok/conn/tee.go:70 +0x5c
io.Copy(0x1157af60, 0x11572f30, 0x11560620, 0x11560920, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:340 +0x80
ngrok/conn.func·002(0x115922d0, 0x11572f30, 0x114906e0, 0x11560920, 0x11579a50, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:110 +0x8a
created by ngrok/conn.Join
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:121 +0xd0
goroutine 55 [runnable]:
net.runtime_pollWait(0x4f4dec, 0x72, 0x0)
/usr/local/Cellar/go/1.1.1/src/pkg/runtime/znetpoll_darwin_386.c:118 +0x6f
net.(*pollDesc).WaitRead(0x115922cc, 0x23, 0x114f57a0)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_poll_runtime.go:75 +0x30
net.(*netFD).Read(0x11592280, 0x115a6000, 0x8000, 0x8000, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/fd_unix.go:195 +0x20b
net.(*conn).Read(0x115799b8, 0x115a6000, 0x8000, 0x8000, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/net/net.go:123 +0xa6
ngrok/conn.(*tcpConn).Read(0x1157ae60, 0x115a6000, 0x8000, 0x8000, 0x0, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:0 +0x53
io.(*teeReader).Read(0x11578fc0, 0x115a6000, 0x8000, 0x8000, 0x82, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:481 +0x53
ngrok/conn.(*Tee).Read(0x11572f30, 0x115a6000, 0x8000, 0x8000, 0x82, ...)
/Users/aes/src/ngrok/src/ngrok/conn/tee.go:62 +0x53
io.Copy(0x115a5020, 0x114f4900, 0x1157afe0, 0x11572f30, 0x82, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:348 +0x172
ngrok/conn.(*tcpConn).ReadFrom(0x11560920, 0x1157afe0, 0x11572f30, 0x0, 0x0, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:158 +0xf6
io.Copy(0x114f5740, 0x11560920, 0x1157afe0, 0x11572f30, 0x0, ...)
/usr/local/Cellar/go/1.1.1/src/pkg/io/io.go:340 +0x80
ngrok/conn.func·002(0x114906e0, 0x11560920, 0x115922d0, 0x11572f30, 0x11579a58, ...)
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:110 +0x8a
created by ngrok/conn.Join
/Users/aes/src/ngrok/src/ngrok/conn/conn.go:122 +0x105
When forwarding a non-HTTP service, the remote port on ngrok.com is assigned by ngrok. It would be nice to be able to request one yourself, similar to the subdomain for HTTP services
To be more precise, currently the command ./ngrok -proto=tcp 22 forwards to tcp://ngrok.com:XXXXX, where XXXXX cannot be chosen.
Everytime I try to run ngrok 3000, it throws.
Server failed to allocate tunnel: You must first reserve a custom hostname as a Reversed Domain at https://ngrok.com/dashboard
I even paid for ngrok in the hopes of getting it to go away (no complaints, I was meaning to anyway) and it still didn't. I downloaded a fresh copy and replaced the old one, to no effect. I removed ~/.ngrok
and re-authed, to no effect.
➜ Downloads system_profiler SPSoftwareDataType
Software:
System Software Overview:
System Version: OS X 10.8.5 (12F37)
Kernel Version: Darwin 12.5.0
Boot Volume: Macintosh SSD
Boot Mode: Normal
Computer Name: Robert Trencheny’s MacBook Pro
User Name: Robert Trencheny (robbiet480)
Secure Virtual Memory: Enabled
Time since boot: 9 days 9:19
➜ Downloads
Hi. I would like to create a tunnel on OpenBSD on some platforms unsupported by golang. I understand that you like golang but it doesn't run everywhere. A simple public and documented API would help a lot to users like me and probably would attract to devs of third party clients.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.