void test_rtsp_client_request (void)
{
    rtsp_ret_e ret;
    char machine_name[NAME_SIZE];
    
    /* Start the RTSP Server */
    pthread_create(&server_thread_id, NULL,
                   &server_thread_activation, NULL);

    sleep(2);
    /* sa_ignore IGNORE_RETURN */    
    gethostname(machine_name, NAME_SIZE);
    ret = rtsp_client_init(machine_name, 8554);
    CU_ASSERT_EQUAL(ret, RTSP_SUCCESS);

    ret = rtsp_send_request(
        "vqe-channels", MEDIA_TYPE_APP_SDP,
        TIME_ADD_A_R(get_sys_time(), VQEC_UPDATER_TIMEOUT_BACKGROUND));
    CU_ASSERT_EQUAL(ret, RTSP_SUCCESS);

    CU_ASSERT_EQUAL(rtsp_get_response_code(), MSG_200_OK);

    ret = rtsp_client_close();
    CU_ASSERT_EQUAL(ret, RTSP_SUCCESS);

    system("kill -9 `pidof VCDServer`");
    sleep(2);
}
Beispiel #2
0
Datei: rtsp.c Projekt: clkao/msdl
/*
 * send rtsp_request and free it.
 * this function is purely for making code more readable.
 *
 * return value:  what rtsp_send request returned. (status code: success  -1: failure)
 */
int rtsp_send_request_and_free(struct stream_t *stream,struct rtsp_header_t *rtsp_hdr)
{
    int ret;
    
    ret = rtsp_send_request(stream,rtsp_hdr);
    free_rtsp_header(rtsp_hdr);
    
    return ret;
}
int main (int argc, char *argv[])
{
    char serverHost[NAME_SIZE];
    int  serverPort;
    int loglevel;

    if (argc < 5) {
        printf( "\nUsage: %s %s\n", argv[0], applicationUsage);
        exit(-1);
    }

    strncpy(serverHost, argv[1], NAME_SIZE);
    serverPort = atoi(argv[2]);
    loglevel = atoi(argv[3]);

    /* Initialize the logging facility */
    syslog_facility_open(LOG_RTSP, LOG_CONS);
    syslog_facility_filter_set(LOG_RTSP, LOG_INFO);

    /* Initialize a rtsp client */
    if (rtsp_client_init(serverHost, serverPort) != RTSP_SUCCESS) {
        printf("Error:: rtsp client initialization failed!\n");
        exit(-1);
    }

    char name[NAME_SIZE];
    strncpy(name, argv[4], NAME_SIZE);

    syslog_print(RTSP_CHANNEL_UPDATE_NOTICE);

    if (rtsp_send_request(
            name, MEDIA_TYPE_APP_SDP,
            TIME_ADD_A_R(get_sys_time(), VQEC_UPDATER_TIMEOUT_BACKGROUND))
        != RTSP_SUCCESS) {
        printf("Failed to send out the request!\n");
        exit(-1);
    }

    if (rtsp_get_response_code() == MSG_200_OK) {
        printf("\n\nResponse body = \n%s\n",
               rtsp_get_response_body());
    }

    if (rtsp_client_close() != RTSP_SUCCESS) {
        printf("Error:: rtsp client close failed!\n");
        exit(-1);
    }

    exit(0);
}
Beispiel #4
0
int bgav_rtsp_request_describe(bgav_rtsp_t *rtsp, int * got_redirected)
  {
  int content_length;
  const char * var;
  char * buf = NULL;

  /* Send the "DESCRIBE" request */
  
  if(!rtsp_send_request(rtsp, "DESCRIBE", rtsp->url, got_redirected))
    goto fail;

  if(got_redirected && *got_redirected)
    {
    return 1;
    }
  var = bgav_http_header_get_var(rtsp->answers, "Content-Length");
  if(!var)
    goto fail;
  
  content_length = atoi(var);
  
  buf = malloc(content_length+1);
  
  if(bgav_read_data_fd(rtsp->opt, rtsp->fd, (uint8_t*)buf,
                       content_length, rtsp->opt->read_timeout) <
     content_length)
    {
    bgav_log(rtsp->opt, BGAV_LOG_ERROR, LOG_DOMAIN,
             "Reading session description failed");
    goto fail;
    }

  buf[content_length] = '\0';
  
  if(!bgav_sdp_parse(rtsp->opt, buf, &rtsp->sdp))
    goto fail;

  //  bgav_sdp_dump(&rtsp->sdp);
  
  
  free(buf);

  return 1;
  
  fail:

  if(buf)
    free(buf);
  return 0;
  }
Beispiel #5
0
int rtsp_request_play(rtsp_t *s, const char *what) {

  char *buf;

  if (what) {
    buf=strdup(what);
  } else
  {
    buf = _x_asprintf("rtsp://%s:%i/%s", s->host, s->port, s->path);
  }
  rtsp_send_request(s,"PLAY",buf);
  free(buf);

  return rtsp_get_answers(s);
}
Beispiel #6
0
int rtsp_request_setparameter(rtsp_t *s, const char *what) {

  char *buf;

  if (what) {
    buf=strdup(what);
  } else
  {
    buf = _x_asprintf("rtsp://%s:%i/%s", s->host, s->port, s->path);
  }
  rtsp_send_request(s,"SET_PARAMETER",buf);
  free(buf);

  return rtsp_get_answers(s);
}
Beispiel #7
0
int rtsp_request_options(rtsp_t *s, const char *what) {

  char *buf;

  if (what) {
    buf=strdup(what);
  } else
  {
    buf = _x_asprintf("rtsp://%s:%i", s->host, s->port);
  }
  rtsp_send_request(s,"OPTIONS",buf);
  free(buf);

  return rtsp_get_answers(s);
}
Beispiel #8
0
void bgav_rtsp_close(bgav_rtsp_t * r, int teardown)
  {
  if(teardown && (r->fd >= 0))
    rtsp_send_request(r,"TEARDOWN",r->url, NULL);
  
  bgav_http_header_destroy(r->answers);
  bgav_http_header_destroy(r->request_fields);
  bgav_sdp_free(&r->sdp);
  if(r->url) free(r->url);
  if(r->session) free(r->session);

  if(r->fd > 0)
    closesocket(r->fd);
  
  free(r);
  }
Beispiel #9
0
int rtsp_request_options( rtsp_client_t *rtsp, const char *what )
{
    char *buf;

    if( what ) buf = strdup(what);
    else
    {
        buf = xmalloc( strlen(rtsp->p_private->host) + 16 );
        sprintf( buf, "rtsp://%s:%i", rtsp->p_private->host,
                 rtsp->p_private->port );
    }
    rtsp_send_request( rtsp, "OPTIONS", buf );
    free( buf );

    return rtsp_get_answers( rtsp );
}
Beispiel #10
0
static int do_connect(bgav_rtsp_t * rtsp,
                      int * got_redirected, int get_options)
  {
  int port = -1;
  char * host = NULL;
  char * protocol = NULL;
  int ret = 0;
  if(!bgav_url_split(rtsp->url,
                     &protocol,
                     NULL, /* User */
                     NULL, /* Pass */
                     &host,
                     &port, NULL))
    goto done;
  
  if(strcmp(protocol, "rtsp"))
    goto done;

  if(port == -1)
    port = 554;

  //  rtsp->cseq = 1;
  rtsp->fd = bgav_tcp_connect(rtsp->opt, host, port);
  if(rtsp->fd < 0)
    goto done;

  if(get_options)
    {
    if(!rtsp_send_request(rtsp, "OPTIONS", rtsp->url, got_redirected))
      goto done;
    }
  
  ret = 1;

  done:

  if(!ret && (rtsp->fd >= 0))
    closesocket(rtsp->fd);
  
  if(host)
    free(host);
  if(protocol)
    free(protocol);
  return ret;
  }
Beispiel #11
0
int rtsp_request_describe( rtsp_client_t *rtsp, const char *what )
{
    char *buf;

    if( what )
    {
        buf = strdup(what);
    }
    else
    {
        buf = xmalloc( strlen(rtsp->p_private->host) +
                      strlen(rtsp->p_private->path) + 16 );
        sprintf( buf, "rtsp://%s:%i/%s", rtsp->p_private->host,
                 rtsp->p_private->port, rtsp->p_private->path );
    }
    rtsp_send_request( rtsp, "DESCRIBE", buf );
    free( buf );

    return rtsp_get_answers( rtsp );
}
Beispiel #12
0
static int rtsp_request_getparameter( rtsp_client_t *rtsp, const char *what )
{
    char *buf;

    if( what )
    {
        buf = strdup(what);
    }
    else
    {
        buf = (char*)malloc( strlen(rtsp->p_private->host) +
                      strlen(rtsp->p_private->path) + 16 );
        sprintf( buf, "rtsp://%s:%i/%s", rtsp->p_private->host,
                 rtsp->p_private->port, rtsp->p_private->path );
    }

    rtsp_send_request( rtsp, "GET_PARAMETER", buf );
    free( buf );

    return rtsp_get_answers( rtsp );
}
Beispiel #13
0
int rtsp_request_tearoff(rtsp_t *s, const char *what) {

  rtsp_send_request(s,"TEAROFF",what);

  return rtsp_get_answers(s);
}
Beispiel #14
0
int bgav_rtsp_request_play(bgav_rtsp_t * r)
  {
  return rtsp_send_request(r,"PLAY",r->url, NULL);
  }
Beispiel #15
0
int bgav_rtsp_request_setparameter(bgav_rtsp_t * r)
  {
  return rtsp_send_request(r,"SET_PARAMETER",r->url, NULL);
  }
Beispiel #16
0
int rtsp_request_setup(rtsp_t *s, const char *what) {

  rtsp_send_request(s,"SETUP",what);

  return rtsp_get_answers(s);
}
Beispiel #17
0
int rtsp_request_setup( rtsp_client_t *rtsp, const char *what )
{
    rtsp_send_request( rtsp, "SETUP", what );
    return rtsp_get_answers( rtsp );
}
Beispiel #18
0
int rtsp_request_tearoff( rtsp_client_t *rtsp, const char *what )
{
    rtsp_send_request( rtsp, "TEAROFF", what );
    return rtsp_get_answers( rtsp );
}
Beispiel #19
0
int bgav_rtsp_request_setup(bgav_rtsp_t *r, const char *what)
  {
  return rtsp_send_request(r,"SETUP",what, NULL);
  }