On Thu, Mar 17, 2011 at 05:56:46PM +0100, Jan Friesse wrote:
> open_ais_service_connect creates SYS V semaphores and shms.
> If system limit for semaphores/shms is exceeded code looped
> in endless cycle.
> 

Reviewed-by: Angus Salkeld <[email protected]>

> Now ENOSPC is correctly handled and SA_AIS_ERR_NO_SPACE is
> returned to lib user.
> ---
>  branches/whitetank/lib/util.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
> 
> diff --git a/branches/whitetank/lib/util.c b/branches/whitetank/lib/util.c
> index f285eb5..d5c26c2 100644
> --- a/branches/whitetank/lib/util.c
> +++ b/branches/whitetank/lib/util.c
> @@ -339,6 +339,11 @@ openais_service_connect (
>               shmkey = random();
>               ipc_segment->shmid = shmget (shmkey, sizeof (struct 
> shared_memory),
>                       IPC_CREAT|IPC_EXCL|0600);
> +
> +             if (ipc_segment->shmid == -1 && errno == ENOSPC) {
> +                     res_setup.error = SA_AIS_ERR_NO_SPACE;
> +                     goto error_exit;
> +             }
>       } while (ipc_segment->shmid == -1);
>  
>       /*
> @@ -348,6 +353,11 @@ openais_service_connect (
>               semkey = random();
>               ipc_segment->semid = semget (semkey, 3, 
> IPC_CREAT|IPC_EXCL|0600);
>               ipc_segment->euid = geteuid ();
> +
> +             if (ipc_segment->semid == -1 && errno == ENOSPC) {
> +                     res_setup.error = SA_AIS_ERR_NO_SPACE;
> +                     goto error_exit;
> +             }
>       } while (ipc_segment->semid == -1);
>  
>       /*
> -- 
> 1.5.5.6
> 
> _______________________________________________
> Openais mailing list
> [email protected]
> https://lists.linux-foundation.org/mailman/listinfo/openais
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to