mirror of
https://github.com/tmux/tmux.git
synced 2026-05-30 22:26:18 +00:00
Report file open errors more sensibly, reported by Meriel Luna
Mittelbach in GitHub issue 5081.
This commit is contained in:
8
file.c
8
file.c
@@ -402,6 +402,10 @@ file_read(struct client *c, const char *path, client_file_cb cb, void *cbdata)
|
|||||||
}
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
size = fread(buffer, 1, sizeof buffer, f);
|
size = fread(buffer, 1, sizeof buffer, f);
|
||||||
|
if (ferror(f)) {
|
||||||
|
cf->error = errno;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
if (evbuffer_add(cf->buffer, buffer, size) != 0) {
|
if (evbuffer_add(cf->buffer, buffer, size) != 0) {
|
||||||
cf->error = ENOMEM;
|
cf->error = ENOMEM;
|
||||||
goto done;
|
goto done;
|
||||||
@@ -674,7 +678,7 @@ file_write_close(struct client_files *files, struct imsg *imsg)
|
|||||||
|
|
||||||
/* Client file read error callback. */
|
/* Client file read error callback. */
|
||||||
static void
|
static void
|
||||||
file_read_error_callback(__unused struct bufferevent *bev, __unused short what,
|
file_read_error_callback(__unused struct bufferevent *bev, short what,
|
||||||
void *arg)
|
void *arg)
|
||||||
{
|
{
|
||||||
struct client_file *cf = arg;
|
struct client_file *cf = arg;
|
||||||
@@ -683,7 +687,7 @@ file_read_error_callback(__unused struct bufferevent *bev, __unused short what,
|
|||||||
log_debug("read error file %d", cf->stream);
|
log_debug("read error file %d", cf->stream);
|
||||||
|
|
||||||
msg.stream = cf->stream;
|
msg.stream = cf->stream;
|
||||||
msg.error = 0;
|
msg.error = (what & EVBUFFER_ERROR) ? EIO : 0;
|
||||||
proc_send(cf->peer, MSG_READ_DONE, -1, &msg, sizeof msg);
|
proc_send(cf->peer, MSG_READ_DONE, -1, &msg, sizeof msg);
|
||||||
|
|
||||||
bufferevent_free(cf->event);
|
bufferevent_free(cf->event);
|
||||||
|
|||||||
Reference in New Issue
Block a user