void mltds_ct_con_finalize(value connection) { CS_CONNECTION* conn = connection_ptr(connection); ct_close(conn, CS_FORCE_CLOSE); ct_con_drop(conn); }
int main(int argc, char **argv) { CS_CONTEXT *ctx; CS_CONNECTION *conn; int ret = 1; read_login_info(); if (cs_ctx_alloc(CS_VERSION_100, &ctx) != CS_SUCCEED) { fprintf(stderr, "Context Alloc failed!\n"); return ret; } if (ct_init(ctx, CS_VERSION_100) != CS_SUCCEED) { fprintf(stderr, "Library Init failed!\n"); return ret; } if (ct_con_alloc(ctx, &conn) != CS_SUCCEED) { fprintf(stderr, "Connect Alloc failed!\n"); return ret; } if (ct_con_props(conn, CS_SET, CS_USERNAME, (CS_VOID*) "sa", CS_NULLTERM, NULL) != CS_SUCCEED) { fprintf(stderr, "ct_con_props() SET USERNAME failed!\n"); return ret; } if (ct_con_props(conn, CS_SET, CS_PASSWORD, (CS_VOID*) "invalid", CS_NULLTERM, NULL) != CS_SUCCEED) { fprintf(stderr, "ct_con_props() SET PASSWORD failed!\n"); return ret; } if (ct_connect(conn, SERVER, CS_NULLTERM) != CS_FAIL) { fprintf(stderr, "Connection succeeded??\n"); return ret; } if (ct_cancel(conn, NULL, CS_CANCEL_ALL) != CS_SUCCEED) { fprintf(stderr, "ct_cancel() failed!\n"); return ret; } if (ct_close(conn, CS_UNUSED) != CS_SUCCEED) { fprintf(stderr, "ct_close() failed!\n"); return ret; } if (ct_con_drop(conn) != CS_SUCCEED) { fprintf(stderr, "ct_con_drop() failed!\n"); return ret; } if (ct_exit(ctx, CS_UNUSED) != CS_SUCCEED) { fprintf(stderr, "ct_exit() failed!\n"); return ret; } if (cs_ctx_drop(ctx) != CS_SUCCEED) { fprintf(stderr, "cs_ctx_drop() failed!\n"); return ret; } fprintf(stdout, "Test succeeded\n"); return 0; }
/* Since only one option is meaningful, simplify to a bool */ CAMLprim value mltds_ct_close( value conn, value force ) { CAMLparam2(conn, force); CS_INT option = CS_UNUSED; if ( Bool_val(force) ) option = CS_FORCE_CLOSE; retval_inspect( "ct_close", ct_close(connection_ptr(conn), option) ); CAMLreturn(Val_unit); }
static VALUE connection_Close(VALUE self) { TDS_Connection* conn; Data_Get_Struct(self, TDS_Connection, conn); ct_close(conn->connection, CS_FORCE_CLOSE); ct_exit(conn->context, CS_FORCE_EXIT); conn->connection = NULL; conn->context = NULL; return Qnil; }
CS_RETCODE try_ctlogout(CS_CONTEXT * ctx, CS_CONNECTION * conn, CS_COMMAND * cmd, int verbose) { CS_RETCODE ret; ret = ct_cancel(conn, NULL, CS_CANCEL_ALL); if (ret != CS_SUCCEED) { if (verbose) { fprintf(stderr, "ct_cancel() failed!\n"); } return ret; } ct_cmd_drop(cmd); ct_close(conn, CS_UNUSED); ct_con_drop(conn); ct_exit(ctx, CS_UNUSED); cs_ctx_drop(ctx); return CS_SUCCEED; }
CS_RETCODE SybConnection::con_cleanup_(CS_RETCODE status) { if (conn_) { CS_RETCODE retcode; CS_INT close_option; close_option = (status != CS_SUCCEED) ? CS_FORCE_CLOSE : CS_UNUSED; retcode = ct_close(conn_, close_option); if (retcode != CS_SUCCEED) { SysLogger::error("con_cleanup_: ct_close() failed"); return retcode; } retcode = ct_con_drop(conn_); if (retcode != CS_SUCCEED) { SysLogger::error("con_cleanup_: ct_con_drop() failed"); return retcode; } return retcode; } else { return CS_SUCCEED; } }