* Europagate, 1995
*
* $Log: gipc.c,v $
- * Revision 1.8 1995/05/17 10:51:43 adam
+ * Revision 1.9 1995/05/18 12:03:41 adam
+ * Bug fix in gipc_open: didn't catch EINTR.
+ * Memory leak fix in strqueue.c.
+ *
+ * Revision 1.8 1995/05/17 10:51:43 adam
* Bug fix.
*
* Revision 1.7 1995/05/16 09:40:52 adam
if (sync)
{
gw_log (GW_LOG_DEBUG, "gipc", "Open sync writeonly of %s", server);
- gip->wfd = open (server, O_WRONLY);
- gw_log (GW_LOG_DEBUG, "gipc", "got wfd %d", gip->wfd);
-
- if (gip->wfd == -1)
+ while (1)
{
+ gip->wfd = open (server, O_WRONLY);
+ gw_log (GW_LOG_DEBUG, "gipc", "got wfd %d", gip->wfd);
+
+ if (gip->wfd != -1)
+ break;
gw_log (GW_LOG_DEBUG|GW_LOG_ERRNO, "gipc", "Cannot open %s",
server);
- return -2;
+ if (errno != EINTR)
+ return -2;
}
gw_log (GW_LOG_DEBUG, "gipc", "Open sync readonly of %s", gip->name);
- gip->rfd = open (gip->name, O_RDONLY);
- gw_log (GW_LOG_DEBUG, "gipc", "got rfd %d", gip->rfd);
+ do
+ {
+ gip->rfd = open (gip->name, O_RDONLY);
+ gw_log (GW_LOG_DEBUG, "gipc", "got rfd %d", gip->rfd);
+ } while (gip->rfd == -1 && errno == EINTR);
}
else
{
* Europagate, 1995
*
* $Log: strqueue.c,v $
- * Revision 1.2 1995/05/16 09:40:55 adam
+ * Revision 1.3 1995/05/18 12:03:41 adam
+ * Bug fix in gipc_open: didn't catch EINTR.
+ * Memory leak fix in strqueue.c.
+ *
+ * Revision 1.2 1995/05/16 09:40:55 adam
* LICENSE.
*
* Revision 1.1 1995/03/28 11:42:41 adam
void str_queue_rm (struct str_queue **sq)
{
+ while (str_queue_deq (*sq, NULL, 0))
+ ;
free (*sq);
*sq = NULL;
}