CVS update: php3/functions

From: Date: Fri, 09 Oct 1998 07:56:10 +0000
Subject: CVS update: php3/functions
Groups: php.dev 
Request: Send a blank email to php-dev+get-1749@lists.php.net to get a copy of this message
Date: Friday October 9, 1998 @ 3:56 Author: steinm Update of /repository/php3/functions In directory asf:/u2/tmp/cvs-serv28945/functions Modified Files: hg_comm.c hw.c Log Message: Better error reporting when opening a connection to Hyperwave fails Index: php3/functions/hg_comm.c diff -c php3/functions/hg_comm.c:1.8 php3/functions/hg_comm.c:1.9 *** php3/functions/hg_comm.c:1.8 Sat Oct 3 15:10:13 1998 --- php3/functions/hg_comm.c Fri Oct 9 03:56:09 1998 *************** *** 23,29 **** +----------------------------------------------------------------------+ */ ! /* $Id: hg_comm.c,v 1.8 1998/10/03 19:10:13 shane Exp $ */ /* #define HW_DEBUG */ --- 23,29 ---- +----------------------------------------------------------------------+ */ ! /* $Id: hg_comm.c,v 1.9 1998/10/09 07:56:09 steinm Exp $ */ /* #define HW_DEBUG */ *************** *** 923,929 **** struct sockaddr_in server_addr; struct hostent *hp; if ( (hp = gethostbyname(server_name)) == NULL ) { - /* php3_error(E_WARNING, "gethostbyname failed for %s", server_name); */ return(-1); } --- 923,928 ---- *************** *** 936,943 **** bcopy(hp->h_addr, (char *) &server_addr.sin_addr, hp->h_length); if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { ! /* php3_error(E_WARNING, "socket"); */ ! return(-1); } #if defined(SUN) || (WIN32|WINNT) --- 935,941 ---- bcopy(hp->h_addr, (char *) &server_addr.sin_addr, hp->h_length); if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { ! return(-2); } #if defined(SUN) || (WIN32|WINNT) *************** *** 947,964 **** #endif SUN if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) { - /* php3_error(E_WARNING, "connect"); */ close(sockfd); ! return(-1); } #if !(WIN32|WINNT) if ( (sock_flags = fcntl(sockfd, F_GETFL, 0)) == -1 ) - /* php3_error(E_WARNING, "open_hg_connection: F_GETFL"); */ #endif if ( set_nonblocking(sockfd) == -1 ) { ! return(-1); } return(sockfd); --- 945,960 ---- #endif SUN if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) { close(sockfd); ! return(-3); } #if !(WIN32|WINNT) if ( (sock_flags = fcntl(sockfd, F_GETFL, 0)) == -1 ) #endif if ( set_nonblocking(sockfd) == -1 ) { ! return(-4); } return(sockfd); *************** *** 980,1010 **** *do_swap = 0; buf = 'T'; if ( hg_write(sockfd, &buf, 1) == -1 ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: hg_write (1) returned -1\n"); */ ! return(-1); } if ( hg_read_exact(sockfd, &buf, 1) == -1 ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: hg_read (1) returned -1\n"); */ ! return(-1); } if ( buf == 'F' ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: got >>F<< from server\n"); */ ! return(-1); } if ( buf != 'T' ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: neither >>F<< nor >>T<< from server\n"); */ ! return(-1); } buf = c = ( *(char *)&i ) ? 'l' : 'B'; if ( hg_write(sockfd, &buf, 1) == -1 ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: hg_write (2) returned -1\n"); */ ! return(-1); } if ( hg_read_exact(sockfd, &buf, 1) == -1 ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: hg_read (2) returned -1\n"); */ ! return(-1); } if ( c != buf ) { swap_on = 1; --- 976,1000 ---- *do_swap = 0; buf = 'T'; if ( hg_write(sockfd, &buf, 1) == -1 ) { ! return(-2); } if ( hg_read_exact(sockfd, &buf, 1) == -1 ) { ! return(-3); } if ( buf == 'F' ) { ! return(-4); } if ( buf != 'T' ) { ! return(-5); } buf = c = ( *(char *)&i ) ? 'l' : 'B'; if ( hg_write(sockfd, &buf, 1) == -1 ) { ! return(-6); } if ( hg_read_exact(sockfd, &buf, 1) == -1 ) { ! return(-7); } if ( c != buf ) { swap_on = 1; *************** *** 1015,1039 **** } if ( send_ready(sockfd) == -1) { ! /* php3_error(E_WARNING, "send ready msg returned -1"); */ ! return(-1); } /* Receive return from Ready message */ if ( (ready_msg = recv_ready(sockfd)) == NULL ) { ! /* php3_error(E_WARNING, "initialize_hg_connection: recv_ready returned NULL\n"); */ ! return(-1); } if ((ready_msg->version_msgid & F_VERSION) < VERSION) ! return -1; *version = ready_msg->version_msgid; *server_string = strdup(ready_msg->buf+4); efree(ready_msg->buf); efree(ready_msg); ! /* If we have a username and password then do the identification. */ ! if((NULL != username) && (NULL != password)) { length = HEADER_LENGTH + sizeof(int) + strlen(username) + 1 + strlen(password) + 1; build_msg_header(&msg, length, msgid++, IDENTIFY_MESSAGE); --- 1005,1027 ---- } if ( send_ready(sockfd) == -1) { ! return(-8); } /* Receive return from Ready message */ if ( (ready_msg = recv_ready(sockfd)) == NULL ) { ! return(-9); } if ((ready_msg->version_msgid & F_VERSION) < VERSION) ! return(-8); *version = ready_msg->version_msgid; *server_string = strdup(ready_msg->buf+4); efree(ready_msg->buf); efree(ready_msg); ! /* If we have a username and password then do the identification. */ ! if((NULL != username) && (NULL != password)) { length = HEADER_LENGTH + sizeof(int) + strlen(username) + 1 + strlen(password) + 1; build_msg_header(&msg, length, msgid++, IDENTIFY_MESSAGE); *************** *** 1049,1064 **** if ( send_hg_msg(sockfd, &msg, length) == -1 ) { efree(msg.buf); ! return(-1); } efree(msg.buf); } ! if((NULL != username) && (NULL != password)) { /* Receive return form identify message */ retmsg = recv_hg_msg(sockfd); if ( retmsg == NULL ) ! return(-1); *userdata = retmsg->buf; efree(retmsg); --- 1037,1052 ---- if ( send_hg_msg(sockfd, &msg, length) == -1 ) { efree(msg.buf); ! return(-10); } efree(msg.buf); } ! if((NULL != username) && (NULL != password)) { /* Receive return form identify message */ retmsg = recv_hg_msg(sockfd); if ( retmsg == NULL ) ! return(-11); *userdata = retmsg->buf; efree(retmsg); Index: php3/functions/hw.c diff -c php3/functions/hw.c:1.13 php3/functions/hw.c:1.14 *** php3/functions/hw.c:1.13 Wed Oct 7 07:57:07 1998 --- php3/functions/hw.c Fri Oct 9 03:56:09 1998 *************** *** 23,29 **** +----------------------------------------------------------------------+ */ ! /* $Id: hw.c,v 1.13 1998/10/07 11:57:07 steinm Exp $ */ #if COMPILE_DL #include "dl/phpdl.h" #endif --- 23,29 ---- +----------------------------------------------------------------------+ */ ! /* $Id: hw.c,v 1.14 1998/10/09 07:56:09 steinm Exp $ */ #if COMPILE_DL #include "dl/phpdl.h" #endif *************** *** 448,499 **** /* Host: */ convert_to_string(argv[0]); ! if (argv[0]->value.str.val) { ! host = (char *) estrndup(argv[0]->value.str.val,argv[0]->value.str.len); ! } else { ! php3_error(E_WARNING, "No hostname given"); ! if(host) efree(host); ! RETURN_FALSE; ! } /* Port: */ convert_to_long(argv[1]); ! if (argv[1]->value.lval) { ! port = argv[1]->value.lval; ! } else { ! php3_error(E_WARNING, "No port number given"); ! RETURN_FALSE; ! } /* Username and Password */ if(argc > 2) { /* Username */ convert_to_string(argv[2]); ! if (argv[2]->value.str.val) { ! username = (char *) estrndup(argv[2]->value.str.val,argv[2]->value.str.len); ! } else { ! php3_error(E_WARNING, "No username given"); ! if(username) efree(username); ! RETURN_FALSE; ! } ! /* Password */ convert_to_string(argv[3]); ! if (argv[3]->value.str.val) { ! password = (char *) estrndup(argv[3]->value.str.val,argv[3]->value.str.len); ! } else { ! php3_error(E_WARNING, "No password given"); ! if(password) efree(password); ! RETURN_FALSE; ! } } /* Create identifier string for connection */ sprintf(buffer, "%d", port); hashed_details_length = strlen(host)+strlen(buffer)+8; if(NULL == (hashed_details = (char *) emalloc(hashed_details_length+1))) { if(password) efree(password); if(username) efree(username); RETURN_FALSE; } sprintf(hashed_details,"hw_%s_%d",host,port); --- 448,477 ---- /* Host: */ convert_to_string(argv[0]); ! host = (char *) estrndup(argv[0]->value.str.val,argv[0]->value.str.len); /* Port: */ convert_to_long(argv[1]); ! port = argv[1]->value.lval; /* Username and Password */ if(argc > 2) { /* Username */ convert_to_string(argv[2]); ! username = (char *) estrndup(argv[2]->value.str.val,argv[2]->value.str.len); /* Password */ convert_to_string(argv[3]); ! password = (char *) estrndup(argv[3]->value.str.val,argv[3]->value.str.len); } /* Create identifier string for connection */ sprintf(buffer, "%d", port); hashed_details_length = strlen(host)+strlen(buffer)+8; if(NULL == (hashed_details = (char *) emalloc(hashed_details_length+1))) { + if(host) efree(host); if(password) efree(password); if(username) efree(username); + php3_error(E_ERROR, "Could not get memory for connection details"); RETURN_FALSE; } sprintf(hashed_details,"hw_%s_%d",host,port); *************** *** 506,512 **** list_entry new_le; if (php3_hw_module.max_links!=-1 && php3_hw_module.num_links>=php3_hw_module.max_links) { ! php3_error(E_WARNING,"Hyperwave: Too many open links (%d)",php3_hw_module.num_links); if(host) efree(host); if(username) efree(username); if(password) efree(password); --- 484,490 ---- list_entry new_le; if (php3_hw_module.max_links!=-1 && php3_hw_module.num_links>=php3_hw_module.max_links) { ! php3_error(E_ERROR,"Hyperwave: Too many open links (%d)",php3_hw_module.num_links); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 514,520 **** RETURN_FALSE; } if (php3_hw_module.max_persistent!=-1 && php3_hw_module.num_persistent>=php3_hw_module.max_persistent) { ! /* php3_error(E_WARNING,"Hyperwave: Too many open persistent links (%d)",php3_hw_module.num_persistent); */ if(host) efree(host); if(username) efree(username); if(password) efree(password); --- 492,498 ---- RETURN_FALSE; } if (php3_hw_module.max_persistent!=-1 && php3_hw_module.num_persistent>=php3_hw_module.max_persistent) { ! php3_error(E_ERROR,"Hyperwave: Too many open persistent links (%d)",php3_hw_module.num_persistent); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 523,529 **** } if ( (sockfd = open_hg_connection(host, port)) < 0 ) { ! /* php3_error(E_WARNING, "open_hg_connection to %s (%d)returned -1", host, port); */ if(host) efree(host); if(username) efree(username); if(password) efree(password); --- 501,507 ---- } if ( (sockfd = open_hg_connection(host, port)) < 0 ) { ! php3_error(E_ERROR, "Could not open connection to %s, Port: %d (retval=%d)", host, port, sockfd); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 532,537 **** --- 510,516 ---- } if(NULL == (ptr = malloc(sizeof(hw_connection)))) { + php3_error(E_ERROR, "Could not get memory for connection structure"); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 540,546 **** } if(0 != (ptr->lasterror = initialize_hg_connection(sockfd, &do_swap, &version, &userdata, &server_string, username, password))) { ! /* php3_error(E_WARNING, "initalize hg connection returned -1"); */ if(host) efree(host); if(username) efree(username); if(password) efree(password); --- 519,525 ---- } if(0 != (ptr->lasterror = initialize_hg_connection(sockfd, &do_swap, &version, &userdata, &server_string, username, password))) { ! php3_error(E_ERROR, "Could not initalize hyperwave connection"); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 565,570 **** --- 544,550 ---- new_le.type = php3_hw_module.le_psocketp;; if (_php3_hash_update(plist,hashed_details,hashed_details_length+1,(void *) &new_le, sizeof(list_entry), NULL)==FAILURE) { + php3_error(E_ERROR, "Could not hash table with connection details"); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 590,597 **** list_entry *index_ptr,new_index_ptr; /* first we check the hash for the hashed_details key. if it exists, ! * it should point us to the right offset where the actual pgsql link sits. ! * if it doesn't, open a new pgsql link, add it to the resource list, * and add a pointer to it with hashed_details as the key. */ if (_php3_hash_find(list,hashed_details,hashed_details_length+1,(void **) &index_ptr)==SUCCESS) { --- 570,577 ---- list_entry *index_ptr,new_index_ptr; /* first we check the hash for the hashed_details key. if it exists, ! * it should point us to the right offset where the actual hyperwave link sits. ! * if it doesn't, open a new hyperwave link, add it to the resource list, * and add a pointer to it with hashed_details as the key. */ if (_php3_hash_find(list,hashed_details,hashed_details_length+1,(void **) &index_ptr)==SUCCESS) { *************** *** 609,615 **** efree(hashed_details); if(username) efree(username); if(password) efree(password); ! if(host) efree(host); return; } else { _php3_hash_del(list,hashed_details,hashed_details_length+1); --- 589,595 ---- efree(hashed_details); if(username) efree(username); if(password) efree(password); ! if(host) efree(host); return; } else { _php3_hash_del(list,hashed_details,hashed_details_length+1); *************** *** 617,624 **** } if ( (sockfd = open_hg_connection(host, port)) < 0 ) { ! /* php3_error(E_WARNING, "open_hg_connection returned -1");*/ ! if(host) efree(host); if(username) efree(username); if(password) efree(password); efree(hashed_details); --- 597,604 ---- } if ( (sockfd = open_hg_connection(host, port)) < 0 ) { ! php3_error(E_ERROR, "Could not open connection to %s, Port: %d (retval=%d", host, port, sockfd); ! if(host) efree(host); if(username) efree(username); if(password) efree(password); efree(hashed_details); *************** *** 634,640 **** } if(0 != (ptr->lasterror = initialize_hg_connection(sockfd, &do_swap, &version, &userdata, &server_string, username, password))) { ! /* php3_error(E_WARNING, "initalize hg connection returned -1"); */ if(host) efree(host); if(username) efree(username); if(password) efree(password); --- 614,620 ---- } if(0 != (ptr->lasterror = initialize_hg_connection(sockfd, &do_swap, &version, &userdata, &server_string, username, password))) { ! php3_error(E_ERROR, "Could not initalize hyperwave connection"); if(host) efree(host); if(username) efree(username); if(password) efree(password); *************** *** 661,666 **** --- 641,648 ---- new_index_ptr.ptr = (void *) return_value->value.lval; new_index_ptr.type = le_index_ptr; if (_php3_hash_update(list,hashed_details,hashed_details_length+1,(void *) &new_index_ptr, sizeof(list_entry), NULL)==FAILURE) { + php3_error(E_ERROR, "Could not update connection details in hash table"); + if(host) efree(host); efree(hashed_details); RETURN_FALSE; } *************** *** 671,677 **** if(host) efree(host); php3_hw_module.default_link=return_value->value.lval; ! /* If there is no userdata because hw_connect was called without username and password, we don't evaluate userdata. */ if(NULL == userdata) --- 653,661 ---- if(host) efree(host); php3_hw_module.default_link=return_value->value.lval; ! /* At this point we have a working connection. If userdata was given ! we are also indentified. ! If there is no userdata because hw_connect was called without username and password, we don't evaluate userdata. */ if(NULL == userdata) -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#1749) next »