| 680 } else { |
680 } else { |
| 681 gaim_notify_error(gc, notice.z_recipient, _("User is offline"), NULL); |
681 gaim_notify_error(gc, notice.z_recipient, _("User is offline"), NULL); |
| 682 } |
682 } |
| 683 } |
683 } |
| 684 |
684 |
| 685 static void handle_message(GaimConnection *gc,ZNotice_t notice, struct sockaddr_in from) |
685 static void handle_message(GaimConnection *gc,ZNotice_t notice) |
| 686 { |
686 { |
| 687 zephyr_account* zephyr = gc->proto_data; |
687 zephyr_account* zephyr = gc->proto_data; |
| 688 |
688 |
| 689 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) { |
689 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) { |
| 690 /* well, we'll be updating in 20 seconds anyway, might as well ignore this. */ |
690 /* well, we'll be updating in 20 seconds anyway, might as well ignore this. */ |
| 1058 static gint check_notify_tzc(gpointer data) |
1058 static gint check_notify_tzc(gpointer data) |
| 1059 { |
1059 { |
| 1060 GaimConnection *gc = (GaimConnection *)data; |
1060 GaimConnection *gc = (GaimConnection *)data; |
| 1061 zephyr_account* zephyr = gc->proto_data; |
1061 zephyr_account* zephyr = gc->proto_data; |
| 1062 parse_tree *newparsetree = read_from_tzc(zephyr); |
1062 parse_tree *newparsetree = read_from_tzc(zephyr); |
| 1063 struct sockaddr_in from; |
|
| 1064 if (newparsetree != NULL) { |
1063 if (newparsetree != NULL) { |
| 1065 gchar *spewtype; |
1064 gchar *spewtype; |
| 1066 if ( (spewtype = tree_child(find_node(newparsetree,"tzcspew"),2)->contents) ) { |
1065 if ( (spewtype = tree_child(find_node(newparsetree,"tzcspew"),2)->contents) ) { |
| 1067 if (!g_ascii_strncasecmp(spewtype,"message",7)) { |
1066 if (!g_ascii_strncasecmp(spewtype,"message",7)) { |
| 1068 ZNotice_t notice; |
1067 ZNotice_t notice; |
| 1082 notice.z_recipient = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"recipient"),2)->contents); |
1081 notice.z_recipient = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"recipient"),2)->contents); |
| 1083 notice.z_sender = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"sender"),2)->contents); |
1082 notice.z_sender = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"sender"),2)->contents); |
| 1084 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2"; |
1083 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2"; |
| 1085 notice.z_message_len = strlen(msg) + 3; |
1084 notice.z_message_len = strlen(msg) + 3; |
| 1086 notice.z_message = buf; |
1085 notice.z_message = buf; |
| 1087 handle_message(gc,notice,from); |
1086 handle_message(gc, notice); |
| 1088 g_free(msg); |
1087 g_free(msg); |
| 1089 /* g_free(zsig); */ |
1088 /* g_free(zsig); */ |
| 1090 g_free(buf); |
1089 g_free(buf); |
| 1091 /* free_parse_tree(msgnode); |
1090 /* free_parse_tree(msgnode); |
| 1092 free_parse_tree(bodynode); |
1091 free_parse_tree(bodynode); |
| 1173 |
1172 |
| 1174 switch (notice.z_kind) { |
1173 switch (notice.z_kind) { |
| 1175 case UNSAFE: |
1174 case UNSAFE: |
| 1176 case UNACKED: |
1175 case UNACKED: |
| 1177 case ACKED: |
1176 case ACKED: |
| 1178 handle_message(gc,notice, from); |
1177 handle_message(gc,notice); |
| 1179 break; |
1178 break; |
| 1180 case SERVACK: |
1179 case SERVACK: |
| 1181 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) { |
1180 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) { |
| 1182 message_failed(gc,notice, from); |
1181 message_failed(gc,notice, from); |
| 1183 } |
1182 } |