Hacker News new | ask | show | jobs
by spydum 4249 days ago
The Server: cowboy tag is from an Erlang web server:

https://github.com/ninenines/cowboy/blob/master/src/cowboy_p...

I'm guessing around here would be interesting to add a test case to handle.

As far as whose server this is? I'd guess Heroku or AWS, though it's plenty possible T-Mobile could have devised some proxy to inspect traffic, but seems unlikely they would do so with Cowboy?

4 comments

It's simple enough to single out Heroku:

  $ cat <<EOF | nc example.herokuapp.com 80
  GET /test  HTTP/1.1
  
  EOF
  ----
  HTTP/1.1 505 HTTP Version Not Supported
Your example fails with or without the whitespace. These work though:

Request

  printf 'GET / HTTP/1.1\r\nHost: example.herokuapp.com\r\n\r\n' |  nc example.herokuapp.com 80
Response

  HTTP/1.1 200 OK
  Connection: keep-alive
  Server: SimpleHTTP/0.6 Python/2.7.6
Request

  printf 'GET /  HTTP/1.1\r\nHost: example.herokuapp.com\r\n\r\n' |  nc example.herokuapp.com 80
Response

  HTTP/1.1 505 HTTP Version Not Supported
  Connection: close
  Server: Cowboy
Ah right, forgot about the newline specification. I guess, for reference, the smallest string I can come up with to get Cowboy to spit that error message is '\x20\x20\n'. Parsers are fun.
T-mobile is known to have, in the past at least, used Erlang. And Cowboy is one of the most popular web servers within that community at this point.
Didn't heroku turn off legacy routing last week? I was getting emails warning me to update to their new routing rules by Monday. Seems like it could be related.
Erlang is from Ericson, a telecom company. T-Mobile is a telecom company. Doesn't seem a stretch that they would use erlang.