]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Mask remote party identity in SIP presence if channel var presence_privacy=true
authorDaniel Swarbrick <daniel@seventhsignal.de>
Tue, 7 Jun 2011 11:58:12 +0000 (13:58 +0200)
committerDaniel Swarbrick <daniel@seventhsignal.de>
Tue, 7 Jun 2011 11:58:12 +0000 (13:58 +0200)
src/mod/endpoints/mod_sofia/sofia_presence.c
src/switch_channel.c

index 6c7c0cf648db63fb95349a78c812dd5137176b5e..1d65a1508199df221b1e9109902b97d14a283973 100644 (file)
@@ -1571,8 +1571,12 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
                                                stream.write_function(&stream, "<param pname=\"+sip.rendering\" pvalue=\"%s\"/>\n",
                                                                                          !strcasecmp(event_status, "hold") ? "no" : "yes");
                                                stream.write_function(&stream, "</target>\n</local>\n");
-                                               stream.write_function(&stream, "<remote>\n<identity display=\"%s\">sip:%s@%s</identity>\n", clean_from_user, clean_from_user,
-                                                                                         host);
+                                               if (switch_true(switch_event_get_header(helper->event, "Presence-Privacy"))) {
+                                                       stream.write_function(&stream, "<remote>\n<identity display=\"Anonymous\">sip:anonymous@anonymous.invalid</identity>\n");
+                                               } else {
+                                                       stream.write_function(&stream, "<remote>\n<identity display=\"%s\">sip:%s@%s</identity>\n", clean_from_user, clean_from_user,
+                                                                                                 host);
+                                               }
                                                stream.write_function(&stream, "<target uri=\"sip:**%s@%s\"/>\n", clean_to_user, host);
                                                stream.write_function(&stream, "</remote>\n");
                                        } else if (!strcasecmp(proto, "park")) {
index 01c29374707a074ba5fb270ee824ab76f7500a85..ec01c22a52a4eba3119ec986d0787cd52c78ca43 100644 (file)
@@ -626,6 +626,11 @@ SWITCH_DECLARE(void) switch_channel_perform_presence(switch_channel_t *channel,
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Calling-File", file);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Calling-Function", func);
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Presence-Calling-Line", "%d", line);
+
+               if (switch_true(switch_channel_get_variable(channel, "presence_privacy"))) {
+                       switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Privacy", "true");
+               }
+
                switch_event_fire(&event);
        }
 }