コード例 #1
0
static void delayed_invite_destroy(gpointer data)
{
	struct sipe_delayed_invite *delayed_invite = data;
	sipmsg_free(delayed_invite->msg);
	g_free(delayed_invite->action);
	g_free(delayed_invite);
}
コード例 #2
0
static void
conf_accept_ctx_free(struct conf_accept_ctx *ctx)
{
	g_return_if_fail(ctx != NULL);

	sipmsg_free(ctx->msg);
	g_free(ctx->focus_uri);
	g_free(ctx);
}
コード例 #3
0
ファイル: fetion.c プロジェクト: Gankraft/fetion
static void
transactions_remove(struct fetion_account_data *sip, struct transaction *trans)
{
	if (trans->msg)
		sipmsg_free(trans->msg);
	if (trans->timer)
		purple_timeout_remove(trans->timer);
	sip->transactions = g_slist_remove(sip->transactions, trans);
	g_free(trans);
}
コード例 #4
0
ファイル: sipmsg.c プロジェクト: wosigh/messaging-plugins
struct sipmsg *sipmsg_parse_header(const gchar *header) {
	struct sipmsg *msg = g_new0(struct sipmsg,1);
	gchar **lines = g_strsplit(header,"\r\n",0);
	gchar **parts;
	const gchar *contentlength;
	if(!lines[0]) {
		g_strfreev(lines);
		g_free(msg);
		return NULL;
	}
	parts = g_strsplit(lines[0], " ", 3);
	if(!parts[0] || !parts[1] || !parts[2]) {
		g_strfreev(parts);
		g_strfreev(lines);
		g_free(msg);
		return NULL;
	}
	if(strstr(parts[0],"SIP") || strstr(parts[0],"HTTP")) { /* numeric response */
		msg->responsestr = g_strdup(parts[2]);
		msg->response = strtol(parts[1],NULL,10);
	} else { /* request */
		msg->method = g_strdup(parts[0]);
		msg->target = g_strdup(parts[1]);
		msg->response = 0;
	}
	g_strfreev(parts);
	if (sipe_utils_parse_lines(&msg->headers, lines + 1, ":") == FALSE) {
		g_strfreev(lines);
		sipmsg_free(msg);
		return NULL;
	}
	g_strfreev(lines);
	contentlength = sipmsg_find_header(msg, "Content-Length");
	if (contentlength) {
		msg->bodylen = strtol(contentlength,NULL,10);
	} else {
		SIPE_DEBUG_FATAL_NOFORMAT("sipmsg_parse_header(): Content-Length header not found");
	}
	if(msg->response) {
		const gchar *tmp;
		tmp = sipmsg_find_header(msg, "CSeq");
		if(!tmp) {
			/* SHOULD NOT HAPPEN */
			msg->method = 0;
		} else {
			parts = g_strsplit(tmp, " ", 2);
			msg->method = g_strdup(parts[1]);
			g_strfreev(parts);
		}
	}
	return msg;
}