projects
/
record-dvb
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
90d8d87
)
enforce timeouts
author
michael
<michael>
Sun, 2 Jul 2006 00:50:31 +0000
(
00:50
+0000)
committer
michael
<michael>
Sun, 2 Jul 2006 00:50:31 +0000
(
00:50
+0000)
record-dvb.c
patch
|
blob
|
blame
|
history
sap.c
patch
|
blob
|
blame
|
history
diff --git
a/record-dvb.c
b/record-dvb.c
index d87d3e789ce362110c7161030ad1918e10398b12..9356348343fe4f81d20cc0cf580f8c63b95fd1f2 100644
(file)
--- a/
record-dvb.c
+++ b/
record-dvb.c
@@
-6,6
+6,7
@@
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/select.h>
#include <fcntl.h>
#include <unistd.h>
#include <strings.h>
#include <fcntl.h>
#include <unistd.h>
#include <strings.h>
@@
-25,6
+26,9
@@
void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
int error_sleep = 0;
char buffer[CHUNKSIZE];
int in, out;
int error_sleep = 0;
char buffer[CHUNKSIZE];
int in, out;
+ fd_set rfds;
+ struct timeval tv;
+ int retval;
if ((in = (*open_fn)(url)) < 0) {
fprintf(stderr,"Can't open url %s!\n",url);
if ((in = (*open_fn)(url)) < 0) {
fprintf(stderr,"Can't open url %s!\n",url);
@@
-60,6
+64,22
@@
void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
}
}
}
}
+ FD_ZERO(&rfds);
+ FD_SET(in, &rfds);
+
+ tv.tv_sec = 1;
+ tv.tv_usec = 0;
+
+ if ((retval = select(in + 1, &rfds, NULL, NULL, &tv)) == -1) {
+ error_sleep = 1;
+ continue;
+ }
+
+ if (!retval) {
+ gettimeofday(&curr, NULL);
+ continue;
+ }
+
if ((recvd = recv(in, buffer, CHUNKSIZE, 0)) < 1) {
error_sleep = 1;
continue;
if ((recvd = recv(in, buffer, CHUNKSIZE, 0)) < 1) {
error_sleep = 1;
continue;
diff --git
a/sap.c
b/sap.c
index 684c509bf25c81c27365b78bd01b7dcda25d95e0..49dfcc8d8f2d9f0c2d7074f129579410887d58d4 100644
(file)
--- a/
sap.c
+++ b/
sap.c
@@
-8,6
+8,8
@@
#include <time.h>
#include <string.h>
#include <strings.h>
#include <time.h>
#include <string.h>
#include <strings.h>
+#include <unistd.h>
+#include <sys/select.h>
#include "mcast.h"
#include "sap.h"
#include "mcast.h"
#include "sap.h"
@@
-41,6
+43,25
@@
char *get_url_from_sap(char *service)
unsigned char auth_len;
unsigned short msgid;
unsigned char *payload, *pos, *host = NULL, *proto = NULL, *port = NULL, *sname = NULL;
unsigned char auth_len;
unsigned short msgid;
unsigned char *payload, *pos, *host = NULL, *proto = NULL, *port = NULL, *sname = NULL;
+ fd_set rfds;
+ struct timeval tv;
+ int retval;
+
+ FD_ZERO(&rfds);
+ FD_SET(fd, &rfds);
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 1000;
+
+ if ((retval = select(fd+1, &rfds, NULL, NULL, &tv)) == -1) {
+ perror("select");
+ return NULL;
+ }
+
+ if (!retval) {
+ gettimeofday(&curr, NULL);
+ continue;
+ }
if ((recvd = recv(fd, buffer, BUFFSIZE, 0)) < 1) {
perror("recv");
if ((recvd = recv(fd, buffer, BUFFSIZE, 0)) < 1) {
perror("recv");
Impressum
,
Datenschutz