From f8da3990b5437e47b7296a6770a3efd215b326d0 Mon Sep 17 00:00:00 2001 From: Hiroshi Inoue Date: Tue, 2 Apr 2002 10:50:50 +0000 Subject: [HACKERS] Proposed patch for ODBC driver w/ C-a-n-c-e-l From: Bradley McLean Patch against 7,2 submitted for comment. This seems to work just fine; Now, when our users submit a 2 hour query with four million row sorts by accident, then cancel it 30 seconds later, it doesn't bog down the server ... --- src/interfaces/odbc/socket.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/interfaces/odbc/socket.c') diff --git a/src/interfaces/odbc/socket.c b/src/interfaces/odbc/socket.c index 031a6779cba..7f563592747 100644 --- a/src/interfaces/odbc/socket.c +++ b/src/interfaces/odbc/socket.c @@ -107,7 +107,6 @@ char SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname) { struct hostent *host; - struct sockaddr_in sadr; unsigned long iaddr; if (self->socket != -1) @@ -117,7 +116,7 @@ SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname) return 0; } - memset((char *) &sadr, 0, sizeof(sadr)); + memset((char *) &(self->sadr), 0, sizeof(self->sadr)); /* * If it is a valid IP address, use it. Otherwise use hostname lookup. @@ -132,13 +131,13 @@ SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname) self->errormsg = "Could not resolve hostname."; return 0; } - memcpy(&(sadr.sin_addr), host->h_addr, host->h_length); + memcpy(&(self->sadr.sin_addr), host->h_addr, host->h_length); } else - memcpy(&(sadr.sin_addr), (struct in_addr *) & iaddr, sizeof(iaddr)); + memcpy(&(self->sadr.sin_addr), (struct in_addr *) & iaddr, sizeof(iaddr)); - sadr.sin_family = AF_INET; - sadr.sin_port = htons(port); + self->sadr.sin_family = AF_INET; + self->sadr.sin_port = htons(port); self->socket = socket(AF_INET, SOCK_STREAM, 0); if (self->socket == -1) @@ -148,8 +147,8 @@ SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname) return 0; } - if (connect(self->socket, (struct sockaddr *) & (sadr), - sizeof(sadr)) < 0) + if (connect(self->socket, (struct sockaddr *) & (self->sadr), + sizeof(self->sadr)) < 0) { self->errornumber = SOCKET_COULD_NOT_CONNECT; self->errormsg = "Could not connect to remote socket."; -- cgit v1.2.3