| 828 */ |
828 */ |
| 829 static int generror(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen) |
829 static int generror(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen) |
| 830 { |
830 { |
| 831 int ret = 0; |
831 int ret = 0; |
| 832 int error = 0; |
832 int error = 0; |
| 833 rxcallback_t userfunc; |
833 aim_rxcallback_t userfunc; |
| 834 struct aim_snac_t *snac2; |
834 struct aim_snac_t *snac2; |
| 835 |
835 |
| 836 snac2 = aim_remsnac(sess, snac->id); |
836 snac2 = aim_remsnac(sess, snac->id); |
| 837 |
837 |
| 838 if (datalen) |
838 if (datalen) |
| 852 { |
852 { |
| 853 |
853 |
| 854 if (snac->subtype == 0x0001) |
854 if (snac->subtype == 0x0001) |
| 855 return generror(sess, mod, rx, snac, data, datalen); |
855 return generror(sess, mod, rx, snac, data, datalen); |
| 856 else if ((snac->family == 0xffff) && (snac->subtype == 0xffff)) { |
856 else if ((snac->family == 0xffff) && (snac->subtype == 0xffff)) { |
| 857 rxcallback_t userfunc; |
857 aim_rxcallback_t userfunc; |
| 858 |
858 |
| 859 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
859 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
| 860 return userfunc(sess, rx); |
860 return userfunc(sess, rx); |
| 861 } |
861 } |
| 862 |
862 |