int on_stream (struct session *sess, int type, iks *node)
{
sess->counter = opt_timeout;
- //iks *x;
switch (type) {
case IKS_NODE_START:
int on_msg (void *user_data, ikspak *pak)
{
- switch_event *event;
char *cmd = iks_find_cdata (pak->x, "body");
char *arg = NULL;
char retbuf[1024] = "";
switch_api_execute(cmd, arg, retbuf, sizeof(retbuf));
- if (switch_event_create(&event, SWITCH_EVENT_API) == SWITCH_STATUS_SUCCESS) {
- if (cmd) {
- switch_event_add_header(event, "re_command", cmd);
- }
- if (arg) {
- switch_event_add_header(event, "re_command_arg", arg);
- }
- switch_event_add_body(event, retbuf);
- switch_event_fire(&event);
- }
-
return 0;
}
{
while (RUNNING == 1) {
int e;
+
memset (&globals.session, 0, sizeof (globals.session));
globals.session.parser = iks_stream_new (IKS_NS_CLIENT, &globals.session, (iksStreamHook *) on_stream);
if (globals.debug) iks_set_log_hook (globals.session.parser, (iksLogHook *) on_log);
return SWITCH_STATUS_FALSE;
}
-
-
/* indicate that the module should continue to be loaded */
return SWITCH_STATUS_SUCCESS;
}
SWITCH_DECLARE(switch_status) switch_api_execute(char *cmd, char *arg, char *retbuf, size_t len)
{
switch_api_interface *api;
+ switch_status status;
+ switch_event *event;
if ((api = loadable_module_get_api_interface(cmd))) {
- api->function(arg, retbuf, len);
+ status = api->function(arg, retbuf, len);
} else {
+ status = SWITCH_STATUS_FALSE;
snprintf(retbuf, len, "INVALID COMMAND [%s]", cmd);
- return SWITCH_STATUS_FALSE;
}
- return SWITCH_STATUS_SUCCESS;
+ if (switch_event_create(&event, SWITCH_EVENT_API) == SWITCH_STATUS_SUCCESS) {
+ if (cmd) {
+ switch_event_add_header(event, "re_command", cmd);
+ }
+ if (arg) {
+ switch_event_add_header(event, "re_command_arg", arg);
+ }
+ switch_event_add_body(event, retbuf);
+ switch_event_fire(&event);
+ }
+
+
+ return status;
}