# mco_HA_create_cancel_socket

This function explicitly creates a cancel socket that can be used in the application.

### For an overview see page HA Applications

### Prototype

        MCO_RET mco_HA_create_cancel_socket (	mco_db_h db,
                          const char* cancelpoint_addr,
                          /*OUT*/ SOCKET * cancel_socket)

### Arguments

db | The connection to the replica’s database.
cancelpoint_addr | The connection string for socket. See description for `mco_HA_replica_params_t` `cancelpoint_addr`
cancel_socket | The created cancel socket.

### Description

This function explicitly creates a cancel socket that can be used in the application. If the cancel socket was created by this call (and not closed by `mco_HA_destroy_cancel_socket()`), `mco_HA_attach_master()` will not create/close the `cancel_socket` but just use the created socket. In this case the `cancelpoint_addr` field in mco_HA_replica_params_t is ignored. If some other thread calls `mco_HA_cancel()`, `mco_HA_attach_master()` interrupts processing and leaves the cancel socket in the readable state. Application code can then use the cancel socket in `select()` or `poll()` syscalls.

### Return Codes

MCO_S_OK | Successful.
MCO_E_NW_INVADDR | The `cancel_addr` doesn't contain a valid connection string
MCO_E_NW_SOCKET | Error in `socket()` syscall.
MCO_E_NW_SOCKOPT | Error in `setsocket()` syscall
MCO_E_NW_SOCKIOCTL | Error in `ioctl()` syscall.
MCO_E_NW_BIND | Error in `bind()` syscall.