/*
- * $Id: dsi_stream.c,v 1.3 2001-06-29 14:14:46 rufustfirefly Exp $
+ * $Id: dsi_stream.c,v 1.4.2.2 2002-03-12 16:16:55 srittau Exp $
*
* Copyright (c) 1998 Adrian Sun (asun@zoology.washington.edu)
* All rights reserved. See COPYRIGHT.
continue;
if (len < 0) {
- syslog(LOG_ERR, "dsi_stream_write: %m");
+ syslog(LOG_ERR, "dsi_stream_write: %s", strerror(errno));
break;
}
stored = 0;
while (stored < length) {
- if ((len = read(dsi->socket, (u_int8_t *) data + stored,
- length - stored)) == -1 && errno == EINTR)
+ len = read(dsi->socket, (u_int8_t *) data + stored, length - stored);
+ if (len == -1 && errno == EINTR)
continue;
- if (len > 0)
+ else if (len > 0)
stored += len;
- else {/* eof or error */
- syslog(LOG_ERR, "dsi_stream_read(%d): %m", len);
+ else { /* eof or error */
+ syslog(LOG_ERR, "dsi_stream_read(%d): %s", len, strerror(errno));
break;
}
}
if (len == towrite) /* wrote everything out */
break;
else if (len < 0) { /* error */
- syslog(LOG_ERR, "dsi_stream_send: %m");
+ syslog(LOG_ERR, "dsi_stream_send: %s", strerror(errno));
sigprocmask(SIG_SETMASK, &oldset, NULL);
return 0;
}
dsi->header.dsi_flags = block[0];
dsi->header.dsi_command = block[1];
+ /* FIXME, not the right place,
+ but we get a server disconnect without reason in the log
+ */
+ if (!block[1]) {
+ LOG(log_error, logtype_default, "dsi_stream_receive: invalid packet, fatal");
+ return 0;
+ }
+
memcpy(&dsi->header.dsi_requestID, block + 2,
sizeof(dsi->header.dsi_requestID));
memcpy(&dsi->header.dsi_code, block + 4, sizeof(dsi->header.dsi_code));