- Timestamp:
- Dec 25, 2013, 3:22:29 PM (10 years ago)
- Children:
- b36b9a6
- Parents:
- 58777e9
- git-author:
- Anders Kaseorg <andersk@mit.edu> (12/25/13 12:53:27)
- git-committer:
- Anders Kaseorg <andersk@mit.edu> (12/25/13 15:22:29)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
message.c
r8f95fc4 r6a5f0c3 52 52 * name already exists, replace the old value with the new value 53 53 */ 54 void owl_message_set_attribute(owl_message *m, const char *attrname, const char *attrvalue) 55 { 56 g_datalist_set_data_full(&m->attributes, attrname, 57 owl_validate_or_convert(attrvalue), g_free); 54 void owl_message_set_attribute(owl_message *m, const char *attrname, const char *attrvalue, GDestroyNotify attrdestroy) 55 { 56 if (owl_needs_convert(attrvalue)) { 57 g_datalist_set_data_full(&m->attributes, attrname, 58 owl_validate_or_convert(attrvalue), g_free); 59 if (attrdestroy) 60 attrdestroy((gpointer)attrvalue); 61 } else { 62 g_datalist_set_data_full(&m->attributes, attrname, (gpointer)attrvalue, attrdestroy); 63 } 58 64 } 59 65 … … 118 124 } 119 125 120 void owl_message_set_class(owl_message *m, const char *class)121 {122 owl_message_set_attribute(m, "class", class);123 }124 125 126 const char *owl_message_get_class(const owl_message *m) 126 127 { … … 132 133 } 133 134 134 void owl_message_set_instance(owl_message *m, const char *inst)135 {136 owl_message_set_attribute(m, "instance", inst);137 }138 139 135 const char *owl_message_get_instance(const owl_message *m) 140 136 { … … 146 142 } 147 143 148 void owl_message_set_sender(owl_message *m, const char *sender)149 {150 owl_message_set_attribute(m, "sender", sender);151 }152 153 144 const char *owl_message_get_sender(const owl_message *m) 154 145 { … … 160 151 } 161 152 162 void owl_message_set_zsig(owl_message *m, const char *zsig)163 {164 owl_message_set_attribute(m, "zsig", zsig);165 }166 167 153 const char *owl_message_get_zsig(const owl_message *m) 168 154 { … … 174 160 } 175 161 176 void owl_message_set_recipient(owl_message *m, const char *recip)177 {178 owl_message_set_attribute(m, "recipient", recip);179 }180 181 162 const char *owl_message_get_recipient(const owl_message *m) 182 163 { … … 190 171 } 191 172 192 void owl_message_set_realm(owl_message *m, const char *realm)193 {194 owl_message_set_attribute(m, "realm", realm);195 }196 197 173 const char *owl_message_get_realm(const owl_message *m) 198 174 { … … 204 180 } 205 181 206 void owl_message_set_body(owl_message *m, const char *body)207 {208 owl_message_set_attribute(m, "body", body);209 }210 211 182 const char *owl_message_get_body(const owl_message *m) 212 183 { … … 219 190 220 191 221 void owl_message_set_opcode(owl_message *m, const char *opcode)222 {223 owl_message_set_attribute(m, "opcode", opcode);224 }225 226 192 const char *owl_message_get_opcode(const owl_message *m) 227 193 { … … 236 202 void owl_message_set_islogin(owl_message *m) 237 203 { 238 owl_message_set_attribute(m, "loginout", "login" );204 owl_message_set_attribute(m, "loginout", "login", NULL); 239 205 } 240 206 … … 242 208 void owl_message_set_islogout(owl_message *m) 243 209 { 244 owl_message_set_attribute(m, "loginout", "logout" );210 owl_message_set_attribute(m, "loginout", "logout", NULL); 245 211 } 246 212 … … 277 243 void owl_message_set_isprivate(owl_message *m) 278 244 { 279 owl_message_set_attribute(m, "isprivate", "true" );245 owl_message_set_attribute(m, "isprivate", "true", NULL); 280 246 } 281 247 … … 302 268 void owl_message_set_type_admin(owl_message *m) 303 269 { 304 owl_message_set_attribute(m, "type", "admin" );270 owl_message_set_attribute(m, "type", "admin", NULL); 305 271 } 306 272 307 273 void owl_message_set_type_loopback(owl_message *m) 308 274 { 309 owl_message_set_attribute(m, "type", "loopback" );275 owl_message_set_attribute(m, "type", "loopback", NULL); 310 276 } 311 277 312 278 void owl_message_set_type_zephyr(owl_message *m) 313 279 { 314 owl_message_set_attribute(m, "type", "zephyr" );280 owl_message_set_attribute(m, "type", "zephyr", NULL); 315 281 } 316 282 317 283 void owl_message_set_type_aim(owl_message *m) 318 284 { 319 owl_message_set_attribute(m, "type", "AIM"); 320 } 321 322 void owl_message_set_type(owl_message *m, const char* type) 323 { 324 owl_message_set_attribute(m, "type", type); 285 owl_message_set_attribute(m, "type", "AIM", NULL); 325 286 } 326 287 … … 431 392 if (!z) return ""; 432 393 return z; 433 }434 435 void owl_message_set_zwriteline(owl_message *m, const char *line)436 {437 owl_message_set_attribute(m, "zwriteline", line);438 394 } 439 395 … … 512 468 513 469 void owl_message_set_isanswered(owl_message *m) { 514 owl_message_set_attribute(m, "question", "answered" );470 owl_message_set_attribute(m, "question", "answered", NULL); 515 471 } 516 472 … … 644 600 { 645 601 owl_message_init(m); 646 owl_message_set_ body(m, text);647 owl_message_set_ sender(m, sender);648 owl_message_set_ recipient(m, recipient);602 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 603 owl_message_set_attribute(m, "sender", g_strdup(sender), g_free); 604 owl_message_set_attribute(m, "recipient", g_strdup(recipient), g_free); 649 605 owl_message_set_type_aim(m); 650 606 … … 671 627 owl_message_init(m); 672 628 owl_message_set_type_admin(m); 673 owl_message_set_ body(m, text);674 owl_message_set_attribute(m, "adminheader", header); /* just a hack for now */629 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 630 owl_message_set_attribute(m, "adminheader", g_strdup(header), g_free); /* just a hack for now */ 675 631 } 676 632 … … 680 636 owl_message_init(m); 681 637 owl_message_set_type_loopback(m); 682 owl_message_set_ body(m, text);683 owl_message_set_ sender(m, "loopsender");684 owl_message_set_ recipient(m, "looprecip");638 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 639 owl_message_set_attribute(m, "sender", "loopsender", NULL); 640 owl_message_set_attribute(m, "recipient", "looprecip", NULL); 685 641 owl_message_set_isprivate(m); 686 642 } … … 716 672 } 717 673 718 owl_message_set_attribute(m, "zephyr_ccs", recips->str); 719 g_string_free(recips, true); 674 owl_message_set_attribute(m, "zephyr_ccs", g_string_free(recips, false), g_free); 720 675 } 721 676 } … … 729 684 struct hostent *hent; 730 685 #endif /* ZNOTICE_SOCKADDR */ 731 char *tmp , *tmp2;686 char *tmp; 732 687 int len; 733 688 … … 751 706 752 707 /* set other info */ 753 owl_message_set_ sender(m, n->z_sender);754 owl_message_set_ class(m, n->z_class);755 owl_message_set_ instance(m, n->z_class_inst);756 owl_message_set_ recipient(m, n->z_recipient);708 owl_message_set_attribute(m, "sender", n->z_sender, NULL); 709 owl_message_set_attribute(m, "class", n->z_class, NULL); 710 owl_message_set_attribute(m, "instance", n->z_class_inst, NULL); 711 owl_message_set_attribute(m, "recipient", n->z_recipient, NULL); 757 712 if (n->z_opcode) { 758 owl_message_set_ opcode(m, n->z_opcode);713 owl_message_set_attribute(m, "opcode", n->z_opcode, NULL); 759 714 } else { 760 owl_message_set_ opcode(m, "");761 } 762 owl_message_set_ zsig(m, owl_zephyr_get_zsig(n, &len));763 764 owl_message_set_ realm(m, zuser_realm(n->z_recipient));715 owl_message_set_attribute(m, "opcode", "", NULL); 716 } 717 owl_message_set_attribute(m, "zsig", owl_zephyr_get_zsig(n, &len), NULL); 718 719 owl_message_set_attribute(m, "realm", zuser_realm(n->z_recipient), NULL); 765 720 766 721 /* Set the "isloginout" attribute if it's a login message */ 767 722 if (!strcasecmp(n->z_class, "login") || !strcasecmp(n->z_class, OWL_WEBZEPHYR_CLASS)) { 768 723 if (!strcasecmp(n->z_opcode, "user_login") || !strcasecmp(n->z_opcode, "user_logout")) { 769 tmp=owl_zephyr_get_field(n, 1); 770 owl_message_set_attribute(m, "loginhost", tmp); 771 g_free(tmp); 772 773 tmp=owl_zephyr_get_field(n, 3); 774 owl_message_set_attribute(m, "logintty", tmp); 775 g_free(tmp); 724 owl_message_set_attribute(m, "loginhost", owl_zephyr_get_field(n, 1), g_free); 725 owl_message_set_attribute(m, "logintty", owl_zephyr_get_field(n, 3), g_free); 776 726 } 777 727 … … 792 742 if (!strcasecmp(n->z_message, "Automated reply:") || 793 743 !strcasecmp(n->z_opcode, "auto")) { 794 owl_message_set_attribute(m, "isauto", "" );744 owl_message_set_attribute(m, "isauto", "", NULL); 795 745 } 796 746 … … 812 762 tmp=owl_zephyr_get_message(n, m); 813 763 if (owl_global_is_newlinestrip(&g)) { 814 tmp2=owl_util_stripnewlines(tmp); 815 owl_message_set_body(m, tmp2); 816 g_free(tmp2); 764 owl_message_set_attribute(m, "body", owl_util_stripnewlines(tmp), g_free); 765 g_free(tmp); 817 766 } else { 818 owl_message_set_body(m, tmp); 819 } 820 g_free(tmp); 767 owl_message_set_attribute(m, "body", tmp, g_free); 768 } 821 769 822 770 /* if zcrypt is enabled try to decrypt the message */ … … 845 793 out[len - 8] = 0; 846 794 } 847 owl_message_set_ body(m, out);795 owl_message_set_attribute(m, "body", out, g_free); 848 796 } else { 849 797 /* Replace the opcode. Otherwise the UI and other bits of code think the 850 798 * message was encrypted. */ 851 owl_message_set_opcode(m, "failed-decrypt"); 799 owl_message_set_attribute(m, "opcode", "failed-decrypt", NULL); 800 g_free(out); 852 801 } 853 g_free(out);854 802 } 855 803 … … 878 826 owl_message_set_direction_in(m); 879 827 880 owl_message_set_attribute(m, "pseudo", "" );881 owl_message_set_attribute(m, "loginhost", host ? host : "");882 owl_message_set_attribute(m, "logintty", tty ? tty : "");883 884 owl_message_set_ sender(m, longuser);885 owl_message_set_ class(m, "LOGIN");886 owl_message_set_ instance(m, longuser);887 owl_message_set_ recipient(m, "");828 owl_message_set_attribute(m, "pseudo", "", NULL); 829 owl_message_set_attribute(m, "loginhost", g_strdup(host ? host : ""), g_free); 830 owl_message_set_attribute(m, "logintty", g_strdup(tty ? tty : ""), g_free); 831 832 owl_message_set_attribute(m, "sender", g_strdup(longuser), g_free); 833 owl_message_set_attribute(m, "class", "LOGIN", NULL); 834 owl_message_set_attribute(m, "instance", g_strdup(longuser), g_free); 835 owl_message_set_attribute(m, "recipient", "", NULL); 888 836 if (direction==0) { 889 owl_message_set_ opcode(m, "USER_LOGIN");837 owl_message_set_attribute(m, "opcode", "USER_LOGIN", NULL); 890 838 owl_message_set_islogin(m); 891 839 } else if (direction==1) { 892 owl_message_set_ opcode(m, "USER_LOGOUT");840 owl_message_set_attribute(m, "opcode", "USER_LOGOUT", NULL); 893 841 owl_message_set_islogout(m); 894 842 } 895 843 896 owl_message_set_ realm(m, zuser_realm(longuser));897 898 owl_message_set_ body(m, "<uninitialized>");844 owl_message_set_attribute(m, "realm", g_strdup(zuser_realm(longuser)), g_free); 845 846 owl_message_set_attribute(m, "body", "<uninitialized>", NULL); 899 847 900 848 /* save the hostname */ … … 913 861 owl_message_set_direction_out(m); 914 862 owl_message_set_type_zephyr(m); 915 owl_message_set_ sender(m, owl_zephyr_get_sender());916 owl_message_set_ class(m, owl_zwrite_get_class(z));917 owl_message_set_ instance(m, owl_zwrite_get_instance(z));863 owl_message_set_attribute(m, "sender", g_strdup(owl_zephyr_get_sender()), g_free); 864 owl_message_set_attribute(m, "class", g_strdup(owl_zwrite_get_class(z)), g_free); 865 owl_message_set_attribute(m, "instance", g_strdup(owl_zwrite_get_instance(z)), g_free); 918 866 if (recip_index < owl_zwrite_get_numrecips(z)) { 919 867 char *zuser = owl_zwrite_get_recip_n_with_realm(z, recip_index); 920 868 char *longzuser = long_zuser(zuser); 921 owl_message_set_recipient(m, longzuser); 922 owl_message_set_realm(m, zuser_realm(longzuser)); 923 g_free(longzuser); 869 owl_message_set_attribute(m, "realm", g_strdup(zuser_realm(longzuser)), g_free); 870 owl_message_set_attribute(m, "recipient", longzuser, g_free); 924 871 g_free(zuser); 925 872 } else { … … 928 875 * anyway. */ 929 876 const char *realm = owl_zwrite_get_realm(z); 930 owl_message_set_ realm(m, realm[0] ? realm : owl_zephyr_get_realm());931 } 932 owl_message_set_ opcode(m, owl_zwrite_get_opcode(z));877 owl_message_set_attribute(m, "realm", g_strdup(realm[0] ? realm : owl_zephyr_get_realm()), g_free); 878 } 879 owl_message_set_attribute(m, "opcode", g_strdup(owl_zwrite_get_opcode(z)), g_free); 933 880 934 881 /* Although not strictly the zwriteline, anyone using the unsantized version 935 882 * of it probably has a bug. */ 936 883 replyline = owl_zwrite_get_replyline(z, recip_index); 937 owl_message_set_ zwriteline(m, replyline);884 owl_message_set_attribute(m, "zwriteline", g_strdup(replyline), g_free); 938 885 g_free(replyline); 939 886 940 owl_message_set_ body(m, body);941 owl_message_set_ zsig(m, owl_zwrite_get_zsig(z));887 owl_message_set_attribute(m, "body", g_strdup(body), g_free); 888 owl_message_set_attribute(m, "zsig", g_strdup(owl_zwrite_get_zsig(z)), g_free); 942 889 943 890 /* save the hostname */
Note: See TracChangeset
for help on using the changeset viewer.