@@ -9,6 +9,9 @@ package goesl
99import (
1010 "bufio"
1111 "fmt"
12+ "io"
13+ "net"
14+ "strconv"
1215 "time"
1316)
1417
@@ -26,45 +29,49 @@ type Client struct {
2629// EstablishConnection - Will attempt to establish connection against freeswitch and create new SocketConnection
2730func (c * Client ) EstablishConnection () error {
2831 conn , err := c .Dial (c .Proto , c .Addr , time .Duration (c .Timeout * int (time .Second )))
32+ if err != nil {
33+ return err
34+ }
2935
3036 c .SocketConnection = SocketConnection {
3137 Conn : conn ,
3238 err : make (chan error ),
3339 m : make (chan * Message ),
3440 }
3541
36- return err
42+ return nil
3743}
3844
3945// Authenticate - Method used to authenticate client against freeswitch. In case of any errors durring so
4046// we will return error.
4147func (c * Client ) Authenticate () error {
4248
4349 m , err := newMessage (bufio .NewReaderSize (c , ReadBufferSize ), false )
44-
4550 if err != nil {
4651 Error (ECouldNotCreateMessage , err )
4752 return err
4853 }
4954
5055 cmr , err := m .tr .ReadMIMEHeader ()
51-
52- Debug ("A: %v %v " , cmr , err )
53-
5456 if err != nil && err .Error () != "EOF" {
5557 Error (ECouldNotReadMIMEHeaders , err )
5658 return err
5759 }
5860
61+ Debug ("A: %v\n " , cmr )
62+
5963 if cmr .Get ("Content-Type" ) != "auth/request" {
6064 Error (EUnexpectedAuthHeader , cmr .Get ("Content-Type" ))
6165 return fmt .Errorf (EUnexpectedAuthHeader , cmr .Get ("Content-Type" ))
6266 }
6367
64- fmt .Fprintf (c , "auth %s\r \n \r \n " , c .Passwd )
68+ s := "auth " + c .Passwd + "\r \n \r \n "
69+ _ , err = io .WriteString (c , s )
70+ if err != nil {
71+ return err
72+ }
6573
6674 am , err := m .tr .ReadMIMEHeader ()
67-
6875 if err != nil && err .Error () != "EOF" {
6976 Error (ECouldNotReadMIMEHeaders , err )
7077 return err
@@ -80,22 +87,24 @@ func (c *Client) Authenticate() error {
8087
8188// NewClient - Will initiate new client that will establish connection and attempt to authenticate
8289// against connected freeswitch server
83- func NewClient (host string , port uint , passwd string , timeout int ) (Client , error ) {
90+ func NewClient (host string , port uint , passwd string , timeout int ) (* Client , error ) {
8491 client := Client {
8592 Proto : "tcp" , // Let me know if you ever need this open up lol
86- Addr : fmt . Sprintf ( "%s:%d" , host , port ),
93+ Addr : net . JoinHostPort ( host , strconv . Itoa ( int ( port )) ),
8794 Passwd : passwd ,
8895 Timeout : timeout ,
8996 }
9097
91- if err := client .EstablishConnection (); err != nil {
92- return client , err
98+ err := client .EstablishConnection ()
99+ if err != nil {
100+ return nil , err
93101 }
94102
95- if err := client .Authenticate (); err != nil {
103+ err = client .Authenticate ()
104+ if err != nil {
96105 client .Close ()
97- return client , err
106+ return nil , err
98107 }
99108
100- return client , nil
109+ return & client , nil
101110}
0 commit comments