Commit 0f4a91af authored by Yang Tse's avatar Yang Tse
Browse files

OOM handling fix
parent 2c2464a6
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -127,8 +127,9 @@ CURLcode Curl_rtsp_disconnect(struct connectdata *conn) {
CURLcode Curl_rtsp_done(struct connectdata *conn,
                        CURLcode status, bool premature)
{
  CURLcode httpStatus;
  struct SessionHandle *data = conn->data;
  struct RTSP *rtsp = data->state.proto.rtsp;
  CURLcode httpStatus;
  long CSeq_sent;
  long CSeq_recv;

@@ -138,9 +139,10 @@ CURLcode Curl_rtsp_done(struct connectdata *conn,

  httpStatus = Curl_http_done(conn, status, premature);

  if(rtsp) {
    /* Check the sequence numbers */
  CSeq_sent = data->state.proto.rtsp->CSeq_sent;
  CSeq_recv = data->state.proto.rtsp->CSeq_recv;
    CSeq_sent = rtsp->CSeq_sent;
    CSeq_recv = rtsp->CSeq_recv;
    if((data->set.rtspreq != RTSPREQ_RECEIVE) && (CSeq_sent != CSeq_recv)) {
      failf(data, "The CSeq of this request %ld did not match the response %ld",
            CSeq_sent, CSeq_recv);
@@ -151,6 +153,7 @@ CURLcode Curl_rtsp_done(struct connectdata *conn,
      infof(data, "Got an RTP Receive with a CSeq of %ld\n", CSeq_recv);
      /* TODO CPC: Server -> Client logic here */
    }
  }

  return httpStatus;
}
@@ -418,6 +421,8 @@ CURLcode Curl_rtsp(struct connectdata *conn, bool *done)
                            p_range ? p_range : "",
                            p_referrer ? p_referrer : "",
                            p_uagent ? p_uagent : "");
  if(result)
    return result;

  if((rtspreq == RTSPREQ_SETUP) || (rtspreq == RTSPREQ_DESCRIBE)) {
    result = Curl_add_timecondition(data, req_buffer);
+3 −0
Original line number Diff line number Diff line
@@ -95,6 +95,9 @@ int test(char *URL)

test_cleanup:

  if(stream_uri)
    free(stream_uri);

  curl_easy_cleanup(curl);
  curl_global_cleanup();

+11 −4
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ int test(char *URL)
  CURL *curl;
  char *stream_uri = NULL;
  int request=1;
  FILE *protofile;
  FILE *protofile = NULL;

  protofile = fopen(libtest_arg2, "wb");
  if(protofile == NULL) {
@@ -109,8 +109,8 @@ int test(char *URL)

  if ((curl = curl_easy_init()) == NULL) {
    fprintf(stderr, "curl_easy_init() failed\n");
    curl_global_cleanup();
    fclose(protofile);
    curl_global_cleanup();
    return TEST_ERR_MAJOR_BAD;
  }
  test_setopt(curl, CURLOPT_URL, URL);
@@ -163,7 +163,10 @@ int test(char *URL)
  if(res)
    goto test_cleanup;

  stream_uri = suburl(URL, request++);
  if((stream_uri = suburl(URL, request++)) == NULL) {
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }
  test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri);
  free(stream_uri);
  stream_uri = NULL;
@@ -184,6 +187,10 @@ int test(char *URL)

test_cleanup:

  if(stream_uri)
    free(stream_uri);

  if(protofile)
    fclose(protofile);

  curl_easy_cleanup(curl);