[asterisk-commits] mmichelson: branch group/CCSS r230213 - /team/group/CCSS/channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Nov 13 16:35:12 CST 2009


Author: mmichelson
Date: Fri Nov 13 16:35:08 2009
New Revision: 230213

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=230213
Log:
Fill in transmit_publish a bit.

The meat is there. I'll probably need to add parameters (or add fields
to the sip_epa_entry struct) so that I can properly allocate a sip_pvt
and direct it to the proper destination.


Modified:
    team/group/CCSS/channels/chan_sip.c

Modified: team/group/CCSS/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS/channels/chan_sip.c?view=diff&rev=230213&r1=230212&r2=230213
==============================================================================
--- team/group/CCSS/channels/chan_sip.c (original)
+++ team/group/CCSS/channels/chan_sip.c Fri Nov 13 16:35:08 2009
@@ -11711,9 +11711,37 @@
 	add_header(req, "Diversion", header_text);
 }
 
-static int transmit_publish(struct sip_epa_entry *epa_entry, enum sip_publish_type publish_type)
-{
-	/*XXX STUB */
+static int transmit_publish(struct sip_epa_entry *epa_entry, enum sip_publish_type publish_type, const char * const body)
+{
+	struct sip_pvt *pvt;
+	struct sip_request req;
+	char expires_str[10];
+
+	/* XXX Use sip_alloc and create_addr here */
+
+	req.method = SIP_PUBLISH;
+
+	pvt->branch = ast_random();
+	build_via(p);
+
+	initreqprep(&req, p, SIP_PUBLISH);
+
+	if (p->options && p->options->auth) {
+		add_header(&req, p->options->authheader, p->options->auth);
+	}
+
+	add_header("Event", epa_entry->event);
+
+	snprintf(expires_str, sizeof(expires_str), "%d", publish_type == SIP_PUBLISH_REMOVE ? 0 : DEFAULT_PUBLISH_EXPIRES);
+	add_header("Expires", expires_str);
+
+	if (publish_type != SIP_PUBLISH_INITIAL) {
+		add_header("SIP-If-Match", epa_entry->entity_tag);
+	}
+
+	add_line(&req, body);
+	send_request(p, &req, XMIT_RELIABLE, INITIAL_CSEQ);
+
 	return 0;
 }
 




More information about the asterisk-commits mailing list