int 
 get_reply(struct event_queue *eq, char **buf, int *code_min)
 {
-  char *msg;
+  char *msg=NULL;
   int ret, code;
   size_t len, l;
   struct timeval tv;
   data.gss = &eq->gss;
   data.timeout = &tv;
   len = read_il_data(&data, &msg, gss_reader);
-  if(len < 0) 
+  if(len < 0) {
+    set_error(IL_PROTO, LB_PROTO, "get_reply: error reading server reply");
     return(-1);
-
+  }
   ret = decode_il_reply(&code, code_min, buf, msg);
-  free(msg);
+  if(msg) free(msg);
   if(ret < 0) {
     set_error(IL_PROTO, LB_PROTO, "get_reply: error decoding server reply");
     return(-1);