static globus_result_t globus_l_xio_telnet_accept( void * driver_server, globus_xio_operation_t accept_op) { globus_result_t res; globus_l_xio_telnet_attr_t * attr; GlobusXIOName(globus_l_xio_telnet_accept); res = globus_l_xio_telnet_attr_copy((void **) (void *) &attr, driver_server); if(res != GLOBUS_SUCCESS) { goto error; } res = globus_xio_driver_pass_accept( accept_op, globus_l_xio_telnet_accept_cb, attr); if(res != GLOBUS_SUCCESS) { goto error_pass; } return GLOBUS_SUCCESS; error_pass: globus_l_xio_telnet_server_destroy(attr); error: return res; }
/** * Accept an HTTP request * @ingroup globus_i_xio_http_server * * Passes the request to the transport driver. In the callback, * the request target information will be generated. * * @param driver_server * Void * pointing to a server structure. Not used yet. * @param accept_op * Operation associated with the accept. * * @return * This function passes the accept to the underlying transport driver, * so will return whatever value that driver returns. */ globus_result_t globus_i_xio_http_accept( void * driver_server, globus_xio_operation_t accept_op) { return globus_xio_driver_pass_accept(accept_op, globus_l_xio_http_accept_callback, NULL); }
static globus_result_t globus_l_xio_net_manager_server_accept( void * driver_server, globus_xio_operation_t op) { globus_result_t result = GLOBUS_SUCCESS; globus_l_xio_net_manager_server_t *server = driver_server; globus_l_xio_net_manager_link_t *link = NULL; globus_net_manager_attr_t *new_attr_array = NULL; if (! server) { goto no_server; } result = globus_net_manager_context_pre_accept( server->attr->context, server->attr->task_id ? server->attr->task_id : "unset", server->transport_name, server->local_contact, server->attr->attr_array, &new_attr_array); if (result) { goto pre_accept_fail; } link = malloc(sizeof(globus_l_xio_net_manager_link_t)); if (link == NULL) { result = GlobusNetManagerErrorMemory("link"); goto link_malloc_fail; } link->local_contact = strdup(server->local_contact); if (link->local_contact == NULL) { result = GlobusNetManagerErrorMemory("local_contact"); goto strdup_local_contact_fail; } link->remote_contact = NULL; if (server->attr) { result = globus_l_xio_net_manager_attr_copy( (void **) &link->attr, server->attr); } else { result = globus_l_xio_net_manager_attr_init( (void **) &link->attr); } if (result != GLOBUS_SUCCESS) { goto attr_copy_fail; } link->transport_name = server->transport_name; link->transport_driver = server->transport_driver; if (new_attr_array) { globus_net_manager_attr_array_delete(link->attr->attr_array); link->attr->attr_array = new_attr_array; new_attr_array = NULL; } no_server: result = globus_xio_driver_pass_accept( op, globus_l_xio_net_manager_server_accept_callback, link); if (result != GLOBUS_SUCCESS && link != NULL) { globus_l_xio_net_manager_attr_destroy(link->attr); attr_copy_fail: free(link->local_contact); strdup_local_contact_fail: free(link); } link_malloc_fail: pre_accept_fail: return result; }