83{
   84    pjsip_msg_body *body = rdata->msg_info.msg->body;
   85    char buf[body ? body->len + 1 : 1];
 
   87    char *line;
   88    char event = '\0';
   89    unsigned int duration = 100;
   90    char is_dtmf, is_dtmf_relay, is_flash;
   91    int res;
   92 
   94        return 0;
   95    }
   96 
  100 
  101    if (!is_flash && !is_dtmf && !is_dtmf_relay) {
  102        return 0;
  103    }
  104 
  105    if (!body || !body->len) {
  106        
  108        return 1;
  109    }
  110 
  111    res = body->print_body(body, 
buf, body->len);
 
  112    if (res < 0) {
  114        return 1;
  115    }
  117 
  118    if (is_dtmf) {
  119        
  121    } else if (is_dtmf_relay) { 
  122        while ((line = 
strsep(&cur, 
"\r\n"))) {
 
  124 
  125            if (!(
c = strchr(line, 
'='))) {
 
  126                continue;
  127            }
  128 
  131 
  132            if (!strcasecmp(line, "signal")) {
  134                    break;
  135                }
  136            } else if (!strcasecmp(line, "duration")) {
  137                sscanf(
c, 
"%30u", &duration);
 
  138            }
  139        }
  140    }
  141 
  142    if (
event == 
'!' || is_flash) {
 
  145    } 
else if (
event != 
'\0') {
 
  150    } else {
  152    }
  153 
  155    return 1;
  156}
char * strsep(char **str, const char *delims)
static struct ast_mansession session
int ast_queue_frame(struct ast_channel *chan, struct ast_frame *f)
Queue one or more frames to a channel's frame queue.
static char get_event(const char *c)
static int is_media_type(pjsip_rx_data *rdata, char *subtype)
static void send_response(struct ast_sip_session *session, struct pjsip_rx_data *rdata, int code)
char *attribute_pure ast_skip_blanks(const char *str)
Gets a pointer to the first non-whitespace character in a string.
Data structure associated with a single frame of data.
struct ast_frame_subclass subclass