chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: link - take refcounts on links
[elogind.git]
/
src
/
journal
/
journal-remote-parse.c
diff --git
a/src/journal/journal-remote-parse.c
b/src/journal/journal-remote-parse.c
index c961844c443e7f08d86a0052602e78b73b907821..239ff381975703c920b0a9ad6d1e2348fe3905c6 100644
(file)
--- a/
src/journal/journal-remote-parse.c
+++ b/
src/journal/journal-remote-parse.c
@@
-40,7
+40,7
@@
void source_free(RemoteSource *source) {
static int get_line(RemoteSource *source, char **line, size_t *size) {
ssize_t n, remain;
static int get_line(RemoteSource *source, char **line, size_t *size) {
ssize_t n, remain;
- char *c;
+ char *c
= NULL
;
char *newbuf = NULL;
size_t newsize = 0;
char *newbuf = NULL;
size_t newsize = 0;
@@
-49,11
+49,17
@@
static int get_line(RemoteSource *source, char **line, size_t *size) {
assert(source->filled <= source->size);
assert(source->buf == NULL || source->size > 0);
assert(source->filled <= source->size);
assert(source->buf == NULL || source->size > 0);
- c = memchr(source->buf, '\n', source->filled);
+ if (source->buf)
+ c = memchr(source->buf, '\n', source->filled);
+
if (c != NULL)
goto docopy;
resize:
if (c != NULL)
goto docopy;
resize:
+ if (source->fd < 0)
+ /* we have to wait for some data to come to us */
+ return -EWOULDBLOCK;
+
if (source->size - source->filled < LINE_CHUNK) {
// XXX: add check for maximum line length
if (source->size - source->filled < LINE_CHUNK) {
// XXX: add check for maximum line length
@@
-130,6
+136,10
@@
static int fill_fixed_size(RemoteSource *source, void **data, size_t size) {
assert(data);
while(source->filled < size) {
assert(data);
while(source->filled < size) {
+ if (source->fd < 0)
+ /* we have to wait for some data to come to us */
+ return -EWOULDBLOCK;
+
if (!GREEDY_REALLOC(source->buf, source->size, size))
return log_oom();
if (!GREEDY_REALLOC(source->buf, source->size, size))
return log_oom();