On 25 October 2014 17:52, Amit Kapila Wrote,
>***************
>*** 358,363 **** handle_sigint(SIGNAL_ARGS)
>--- 358,364 ----
>
>  /* Send QueryCancel if we are processing a database query */
>  if (cancelConn != NULL)
>  {
>+ inAbort = true;
>  if (PQcancel(cancelConn, errbuf, sizeof(errbuf)))
>  fprintf(stderr, _("Cancel request sent\n"));
>  else
>
>Do we need to set inAbort flag incase PQcancel is successful?
>Basically if PQCancel fails due to any reason, I think behaviour
>can be undefined as the executing thread can assume that cancel is
>done.
>
>*** 391,396 **** consoleHandler(DWORD dwCtrlType)
>--- 392,399 ----
>                             EnterCriticalSection
>(&cancelConnLock);
>                             if (cancelConn != NULL)
>                             {
>+                                           inAbort =
>true;
>+

In “handle_sigint” function if we are going to cancel the query that time I am 
setting the flag inAbort (even when it is success), so that in “select_loop” 
function
If select(maxFd + 1, workerset, NULL, NULL, &tv); come out, we can know whether 
it came out because of cancel query and handle it accordingly.

                i = select(maxFd + 1, workerset, NULL, NULL, NULL);

                                if (in_abort())  //loop break because of cancel 
query, so return fail…
                                {
                                                return -1;
                                }

                                if (i < 0 && errno == EINTR)
                                                continue;

Regards,
Dilip Kumar

Reply via email to