Majid, Can you come up with a code sample or use case that demonstrates the buggy behavior? That's the best way to show that it actually is a problem, and that the changes fix the problem.
-J Majid Khan wrote: > Hello All, > Just checking the code of nspostgres driver (downloaded from git) and > found that the code needs some fixes. Couple of thing which I see > 1- in nspostgres.c > fucntion: static int blob_dml_file > where we see these lines: > if (fd == -1) > { > Ns_Log (Error, " Error opening file %s: %d(%s)", filename, errno, > strerror(errno)); > Tcl_AppendResult (interp, "can't open file ", filename, " for reading. > ", "received error ", strerror(errno), NULL); > } > Why to continue the process when we are unable to open the file? > Shouldn't it be > if (fd == -1) > { > Ns_Log (Error, " Error opening file %s: %d(%s)", filename, errno, > strerror(errno)); > Tcl_AppendResult (interp, "can't open file ", filename, " for reading. > ", "received error ", strerror(errno), NULL); > *return TCL_ERROR; > *} > 2- In the same function where we have this: > if (Ns_PgExec(handle, query) != NS_DML) { > Tcl_DString errString; > Tcl_DStringInit(&errString); > Tcl_DStringAppend > (&errString, "Error inserting data into BLOB\n", -1); > if(handle->verbose) > { > append_PQresultStatus(&errString, nspgConn->res); > > Tcl_DStringAppend(&errString, "SQL: ", -1); > Tcl_DStringAppend(&errString, query, -1); > } > Tcl_AppendResult(interp, Tcl_DStringValue(&errString), NULL); > Tcl_DStringFree(&errString); > return TCL_ERROR; > } > here while returning error we are not closing the file descriptor so I > see a resource leak so it should be > if (Ns_PgExec(handle, query) != NS_DML) { > Tcl_DString errString; > Tcl_DStringInit(&errString); > Tcl_DStringAppend > (&errString, "Error inserting data into BLOB\n", -1); > if(handle->verbose) > { > append_PQresultStatus(&errString, nspgConn->res); > > Tcl_DStringAppend(&errString, "SQL: ", -1); > Tcl_DStringAppend(&errString, query, -1); > } > Tcl_AppendResult(interp, Tcl_DStringValue(&errString), NULL); > Tcl_DStringFree(&errString); > *close(fd); > * return TCL_ERROR; > } > Regards, > Majid. > > > > ------------------------------------------------------------------------------ > Virtualization& Cloud Management Using Capacity Planning > Cloud computing makes use of virtualization - but cloud computing > also focuses on allowing computing to be delivered as a service. > http://www.accelacomm.com/jaw/sfnl/114/51521223/ > > > > _______________________________________________ > aolserver-talk mailing list > aolserver-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/aolserver-talk ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ aolserver-talk mailing list aolserver-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/aolserver-talk