Changeset 3 in code for trunk


Ignore:
Timestamp:
Feb 4, 2020, 10:25:53 AM (5 years ago)
Author:
contact
Message:

Send "unknown command" replies

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/cmd/jounce/main.go

    r1 r3  
    1616        }
    1717
     18        s := jounce.Server{}
     19
    1820        log.Printf("Server listening on %v", addr)
    19         log.Fatal(jounce.Serve(ln))
     21        log.Fatal(s.Serve(ln))
    2022}
  • trunk/server.go

    r1 r3  
    33import (
    44        "fmt"
     5        "io"
    56        "log"
    67        "net"
     
    910)
    1011
    11 func handleConn(conn net.Conn) error {
    12         defer conn.Close()
     12type conn struct {
     13        net net.Conn
     14        irc *irc.Conn
     15}
    1316
    14         ircConn := irc.NewConn(conn)
     17type Server struct{}
     18
     19func (s *Server) handleConn(netConn net.Conn) error {
     20        defer netConn.Close()
     21
     22        conn := conn{netConn, irc.NewConn(netConn)}
    1523        for {
    16                 msg, err := ircConn.ReadMessage()
    17                 if err != nil {
     24                msg, err := conn.irc.ReadMessage()
     25                if err == io.EOF {
     26                        break
     27                } else if err != nil {
    1828                        return err
    1929                }
     30                log.Println(msg)
    2031
    21                 log.Println(msg)
     32                switch msg.Command {
     33                default:
     34                        err = conn.irc.WriteMessage(&irc.Message{
     35                                Command: irc.ERR_UNKNOWNCOMMAND,
     36                                Params: []string{
     37                                        "*",
     38                                        msg.Command,
     39                                        "Unknown command",
     40                                },
     41                        })
     42                }
    2243        }
     44
     45        return netConn.Close()
    2346}
    2447
    25 func Serve(ln net.Listener) error {
     48func (s *Server) Serve(ln net.Listener) error {
    2649        for {
    27                 conn, err := ln.Accept()
     50                c, err := ln.Accept()
    2851                if err != nil {
    2952                        return fmt.Errorf("failed to accept connection: %v", err)
     
    3154
    3255                go func() {
    33                         if err := handleConn(conn); err != nil {
     56                        if err := s.handleConn(c); err != nil {
    3457                                log.Printf("error handling connection: %v", err)
    3558                        }
Note: See TracChangeset for help on using the changeset viewer.