Changeset 146 in code for trunk/downstream.go
- Timestamp:
- Mar 25, 2020, 10:54:08 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r145 r146 833 833 uc.SendMessage(msg) 834 834 }) 835 case "JOIN", "PART": 836 var names string 837 if err := parseMessageParams(msg, &names); err != nil { 838 return err 839 } 840 841 for _, name := range strings.Split(names, ",") { 835 case "JOIN": 836 var namesStr string 837 if err := parseMessageParams(msg, &namesStr); err != nil { 838 return err 839 } 840 841 var keys []string 842 if len(msg.Params) > 1 { 843 keys = strings.Split(msg.Params[1], ",") 844 } 845 846 for i, name := range strings.Split(namesStr, ",") { 842 847 uc, upstreamName, err := dc.unmarshalEntity(name) 843 848 if err != nil { … … 848 853 } 849 854 855 var key string 856 if len(keys) > i { 857 key = keys[i] 858 } 859 860 params := []string{upstreamName} 861 if key != "" { 862 params = append(params, key) 863 } 850 864 uc.SendMessage(&irc.Message{ 851 Command: msg.Command, 852 Params: []string{upstreamName}, 853 }) 854 855 switch msg.Command { 856 case "JOIN": 857 err := dc.srv.db.StoreChannel(uc.network.ID, &Channel{ 858 Name: upstreamName, 859 }) 860 if err != nil { 861 dc.logger.Printf("failed to create channel %q in DB: %v", upstreamName, err) 862 } 863 case "PART": 864 if err := dc.srv.db.DeleteChannel(uc.network.ID, upstreamName); err != nil { 865 dc.logger.Printf("failed to delete channel %q in DB: %v", upstreamName, err) 866 } 865 Command: "JOIN", 866 Params: params, 867 }) 868 869 err = dc.srv.db.StoreChannel(uc.network.ID, &Channel{ 870 Name: upstreamName, 871 Key: key, 872 }) 873 if err != nil { 874 dc.logger.Printf("failed to create channel %q in DB: %v", upstreamName, err) 875 } 876 } 877 case "PART": 878 var namesStr string 879 if err := parseMessageParams(msg, &namesStr); err != nil { 880 return err 881 } 882 883 var reason string 884 if len(msg.Params) > 1 { 885 reason = msg.Params[1] 886 } 887 888 for _, name := range strings.Split(namesStr, ",") { 889 uc, upstreamName, err := dc.unmarshalEntity(name) 890 if err != nil { 891 return ircError{&irc.Message{ 892 Command: irc.ERR_NOSUCHCHANNEL, 893 Params: []string{name, err.Error()}, 894 }} 895 } 896 897 params := []string{upstreamName} 898 if reason != "" { 899 params = append(params, reason) 900 } 901 uc.SendMessage(&irc.Message{ 902 Command: "PART", 903 Params: params, 904 }) 905 906 if err := dc.srv.db.DeleteChannel(uc.network.ID, upstreamName); err != nil { 907 dc.logger.Printf("failed to delete channel %q in DB: %v", upstreamName, err) 867 908 } 868 909 }
Note:
See TracChangeset
for help on using the changeset viewer.