{
        edg_wll_Context ctx;
        char            *errt,*errd;
-       edg_wll_Event   *events;
+       edg_wll_Event   *events = NULL;
        edg_wlc_JobId   job;
        int             i,opt,delay = 1,count = 0;
 
        
        if ( edg_wll_JobLog(ctx,job,&events) )
        {
-               if ( edg_wll_Error(ctx, &errt, &errd) != E2BIG )
-                       goto err;
-
                fprintf(stderr,"%s: %s (%s)\n",argv[0],errt,errd);
        }
 
-       for ( i = 0; events[i].type != EDG_WLL_EVENT_UNDEF; i++ )
+       for ( i = 0; events && events[i].type != EDG_WLL_EVENT_UNDEF; i++ )
        {
                char    *e = edg_wll_UnparseEvent(ctx,events+i);
                fputs(e,stdout);
 
        char ***resp_head,
        char **resp_body)
 {
+       int     ec;
+       char    *ed = NULL;
+
        if (edg_wll_open(ctx)) return edg_wll_Error(ctx,NULL,NULL);
        
        switch (edg_wll_http_send(ctx,request,req_head,req_body)) {
                        edg_wll_close(ctx);
                        if (edg_wll_open(ctx)
                                || edg_wll_http_send(ctx,request,req_head,req_body))
-                                       return edg_wll_Error(ctx,NULL,NULL);
+                                       goto err;
                        /* fallthrough */
                case 0: break;
-               default: return edg_wll_Error(ctx,NULL,NULL);
+               default: goto err;
        }
 
-       if (edg_wll_http_recv(ctx,response,resp_head,resp_body) == ENOTCONN) {
-               edg_wll_close(ctx);
-               (void) (edg_wll_open(ctx)
-                       || edg_wll_http_send(ctx,request,req_head,req_body)
-                       || edg_wll_http_recv(ctx,response,resp_head,resp_body));
+       switch (edg_wll_http_recv(ctx,response,resp_head,resp_body)) {
+               case ENOTCONN:
+                       edg_wll_close(ctx);
+                       if (edg_wll_open(ctx)
+                               || edg_wll_http_send(ctx,request,req_head,req_body)
+                               || edg_wll_http_recv(ctx,response,resp_head,resp_body))
+                                       goto err;
+                       /* fallthrough */
+               case 0: break;
+               default: goto err;
        }
        
        gettimeofday(&ctx->connPool[ctx->connToUse].lastUsed, NULL);
-       
-       return edg_wll_Error(ctx,NULL,NULL);
+       return 0;
+
+err:
+       ec = edg_wll_Error(ctx,NULL,&ed);
+       edg_wll_close(ctx);
+       edg_wll_SetError(ctx,ec,ed);
+       free(ed);
+       return ec;
 }