error.c
author Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Tue, 01 Jun 2010 09:24:02 +0200
changeset 11 5ec956706f0c
permissions -rw-r--r--
new files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     1
/**
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     2
 * Reply to a Jingle IQ with an error.
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     3
 */
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     4
void jingle_error_iq(LmMessage *m, const gchar *errtype,
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     5
    const gchar *cond, const gchar *jinglecond)
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     6
{
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     7
  LmMessage *r;
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     8
  LmMessageNode *err, *tmpnode;
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     9
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    10
  r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_ERROR);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    11
  err = lm_message_node_add_child(r->node, "error", NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    12
  lm_message_node_set_attribute(err, "type", errtype);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    13
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    14
  // error condition as defined by RFC 3920bis section 8.3.3
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    15
  tmpnode = lm_message_node_add_child(err, cond, NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    16
  lm_message_node_set_attribute(tmpnode, "xmlns", NS_XMPP_STANZAS);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    17
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    18
  // jingle error condition as defined by XEP-0166 section 10
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    19
  tmpnode = lm_message_node_add_child(err, jinglecond, NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    20
  lm_message_node_set_attribute(tmpnode, "xmlns", NS_JINGLE_ERRORS);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    21
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    22
  lm_connection_send(lconnection, r, NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    23
  lm_message_unref(r);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    24
}
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    25
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    26
/**
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    27
 * Send a bad-request error (really usefull)
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    28
 */
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    29
void jingle_error_bad_request(LmMessage *m)
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    30
{
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    31
  LmMessage *r;
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    32
  LmMessageNode *err, *tmpnode;
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    33
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    34
  r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_ERROR);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    35
  err = lm_message_node_add_child(r->node, "error", NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    36
  lm_message_node_set_attribute(err, "type", "cancel");
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    37
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    38
  // error condition as defined by RFC 3920bis section 8.3.3
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    39
  tmpnode = lm_message_node_add_child(err, "bad-request", NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    40
  lm_message_node_set_attribute(tmpnode, "xmlns", NS_XMPP_STANZAS);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    41
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    42
  lm_connection_send(lconnection, r, NULL);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    43
  lm_message_unref(r);
5ec956706f0c new files
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    44
}