nopoll_bool on_connection_opened (noPollCtx * ctx, noPollConn * conn, noPollPtr user_data) { /* set connection close */ nopoll_conn_set_on_close (conn, __nopoll_regression_on_close, NULL); if (! nopoll_conn_set_sock_block (nopoll_conn_socket (conn), nopoll_false)) { printf ("ERROR: failed to configure non-blocking state to connection..\n"); return nopoll_false; } /* end if */ /* check to reject */ if (nopoll_cmp (nopoll_conn_get_origin (conn), "http://deny.aspl.es")) { printf ("INFO: rejected connection from %s, with Host: %s and Origin: %s\n", nopoll_conn_host (conn), nopoll_conn_get_host_header (conn), nopoll_conn_get_origin (conn)); return nopoll_false; } /* end if */ /* get protocol to reply an especific case. This is an example on how to detect protocols requested by the client and how to reply with a particular value at the server. */ printf ("Requested protocol: %s\n", nopoll_conn_get_requested_protocol (conn)); if (nopoll_cmp (nopoll_conn_get_requested_protocol (conn), "hello-protocol")) { /* set hello-protocol-response */ nopoll_conn_set_accepted_protocol (conn, "hello-protocol-response"); } /* end if */ /* notify connection accepted */ /* printf ("INFO: connection received from %s, with Host: %s and Origin: %s\n", nopoll_conn_host (conn), nopoll_conn_get_host_header (conn), nopoll_conn_get_origin (conn)); */ return nopoll_true; }
void __myqtt_web_socket_common_association (MyQttConn * conn, noPollConn * nopoll_conn) { MyQttMutex * mutex; /* associate connection */ myqtt_conn_set_data_full (conn, "__my:ws:conn", nopoll_conn, NULL, (axlDestroyFunc) __myqtt_web_socket_close_conn); /* configure default handlers */ conn->receive = __myqtt_web_socket_receive; conn->send = __myqtt_web_socket_send; /* setup I/O handlers */ mutex = axl_new (MyQttMutex, 1); myqtt_mutex_create (mutex); myqtt_conn_set_data_full (conn, "ws:mutex", mutex, NULL, (axlDestroyFunc) __myqtt_web_socket_free_mutex); /* setup on close handler to control sockets */ nopoll_conn_set_on_close (nopoll_conn, __myqtt_web_socket_nopoll_on_close, conn); return; }