diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 5e83978640..b33480938d 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -740,12 +740,27 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * stream.write_function(&stream, "\n", !strcasecmp(event_status, "hold") ? "no" : "yes" ); stream.write_function(&stream, "\n\n"); stream.write_function(&stream, "\nsip:%s@%s\n", clean_from_user, clean_from_user, host); - stream.write_function(&stream, "\n", !strcasecmp(proto, "park") ? "park+" : "", clean_to_user, host); + stream.write_function(&stream, "\n", clean_to_user, host); + stream.write_function(&stream, "\n"); + } else if (!strcasecmp(proto, "park")) { + stream.write_function(&stream, "\nsip:parking@%s;fifo=%s\n", + host, !switch_strlen_zero(clean_to_user) ? clean_to_user : "unknown"); + stream.write_function(&stream, "\n", host); + stream.write_function(&stream, "\n\n\n"); + stream.write_function(&stream, "\nsip:%s\n", uuid); + stream.write_function(&stream, "\n", uuid); + stream.write_function(&stream, "\n"); + } else if (!strcasecmp(proto, "conf")) { + stream.write_function(&stream, "\nsip:conference@%s;conference=%s\n", + host, !switch_strlen_zero(clean_to_user) ? clean_to_user : "unknown"); + stream.write_function(&stream, "\n", host); + stream.write_function(&stream, "\n\n\n"); + stream.write_function(&stream, "\nsip:%s@%s\n", uuid, host); + stream.write_function(&stream, "\n", uuid, host); stream.write_function(&stream, "\n"); - } - } + stream.write_function(&stream, "\n"); }