Add return status values from rtsp_read_response

This commit is contained in:
Mke Brady
2015-02-07 19:00:12 +00:00
parent 411aebe58b
commit 1c47f4ac18
+13 -4
View File
@@ -287,6 +287,7 @@ fail:
}
static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message** the_packet) {
enum rtsp_read_request_response reply=rtsp_read_request_response_ok;
ssize_t buflen = 512;
char *buf = malloc(buflen+1);
@@ -295,21 +296,24 @@ static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message**
ssize_t nread;
ssize_t inbuf = 0;
int msg_size = -1;
while (msg_size < 0) {
if (please_shutdown) {
debug(1, "RTSP shutdown requested.");
reply = rtsp_read_request_response_shutdown_requested;
goto shutdown;
}
nread = read(fd, buf+inbuf, buflen - inbuf);
if (!nread) {
debug(1, "RTSP connection closed.");
reply = rtsp_read_request_response_shutdown_requested;
goto shutdown;
}
if (nread < 0) {
if (errno==EINTR)
continue;
perror("read failure");
reply = rtsp_read_request_response_error;
goto shutdown;
}
inbuf += nread;
@@ -320,6 +324,7 @@ static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message**
if (!msg) {
warn("no RTSP header received");
reply = rtsp_read_request_response_bad_packet;
goto shutdown;
}
@@ -333,6 +338,7 @@ static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message**
buf = realloc(buf, msg_size);
if (!buf) {
warn("too much content");
reply = rtsp_read_request_response_error;
goto shutdown;
}
buflen = msg_size;
@@ -340,12 +346,15 @@ static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message**
while (inbuf < msg_size) {
nread = read(fd, buf+inbuf, msg_size-inbuf);
if (!nread)
if (!nread) {
reply = rtsp_read_request_response_error;
goto shutdown;
}
if (nread==EINTR)
continue;
if (nread < 0) {
perror("read failure");
reply = rtsp_read_request_response_error;
goto shutdown;
}
inbuf += nread;
@@ -354,7 +363,7 @@ static enum rtsp_read_request_response rtsp_read_request(int fd, rtsp_message**
msg->contentlength = inbuf;
msg->content = buf;
*the_packet = msg;
return rtsp_read_request_response_ok;
return reply;
shutdown:
free(buf);
@@ -362,7 +371,7 @@ shutdown:
msg_free(msg);
}
*the_packet = NULL;
return rtsp_read_request_response_error;
return reply;
}
static void msg_write_response(int fd, rtsp_message *resp) {