Browse Source

bugfixes

master v1.0.2
AJ ONeal 6 years ago
parent
commit
c5100b35bf
  1. 1
      chatserver-telnet.go
  2. 18
      chatserver.go

1
chatserver-telnet.go

@ -83,6 +83,7 @@ func handleTelnetConn(bufConn bufferedConn) {
email = strings.TrimSpace(msg) email = strings.TrimSpace(msg)
emailParts := strings.Split(email, "@") emailParts := strings.Split(email, "@")
if 2 != len(emailParts) { if 2 != len(emailParts) {
email = ""
fmt.Fprintf(bufConn, "Email: ") fmt.Fprintf(bufConn, "Email: ")
continue continue
} }

18
chatserver.go

@ -10,7 +10,6 @@ import (
"encoding/base64" "encoding/base64"
"flag" "flag"
"fmt" "fmt"
"io"
"io/ioutil" "io/ioutil"
"net" "net"
"net/http" "net/http"
@ -42,13 +41,13 @@ type ConfMailer struct {
// So we can peek at net.Conn, which we can't do natively // So we can peek at net.Conn, which we can't do natively
// https://stackoverflow.com/questions/51472020/how-to-get-the-size-of-available-tcp-data // https://stackoverflow.com/questions/51472020/how-to-get-the-size-of-available-tcp-data
type bufferedConn struct { type bufferedConn struct {
r *bufio.Reader r *bufio.Reader
rout io.Reader // See https://github.com/polvi/sni/blob/master/sni.go#L135 //rout *io.Reader // See https://github.com/polvi/sni/blob/master/sni.go#L135
net.Conn net.Conn
} }
func newBufferedConn(c net.Conn) bufferedConn { func newBufferedConn(c net.Conn) bufferedConn {
return bufferedConn{bufio.NewReader(c), nil, c} return bufferedConn{bufio.NewReader(c), c}
} }
func (b bufferedConn) Peek(n int) ([]byte, error) { func (b bufferedConn) Peek(n int) ([]byte, error) {
@ -60,9 +59,11 @@ func (b bufferedConn) Buffered() int {
} }
func (b bufferedConn) Read(p []byte) (int, error) { func (b bufferedConn) Read(p []byte) (int, error) {
if b.rout != nil { /*
return b.rout.Read(p) if b.rout != nil {
} return b.rout.Read(p)
}
*/
return b.r.Read(p) return b.r.Read(p)
} }
@ -166,6 +167,9 @@ func muxTcp(conn bufferedConn) {
} }
if "" == protocol { if "" == protocol {
// Throw away the first bytes
b := make([]byte, 4096)
conn.Read(b)
fmt.Fprintf(conn, "\n\nWelcome to Sample Chat! You're not an HTTP client, assuming Telnet.\nYou must authenticate via email to participate\n\nEmail: ") fmt.Fprintf(conn, "\n\nWelcome to Sample Chat! You're not an HTTP client, assuming Telnet.\nYou must authenticate via email to participate\n\nEmail: ")
wantsServerHello <- conn wantsServerHello <- conn
return return

Loading…
Cancel
Save