diff -u libdrizzle-0.8/libdrizzle/result.c libdrizzle-0.8-patched/libdrizzle/result.c --- libdrizzle-0.8/libdrizzle/result.c 2009-11-06 06:46:41.000000000 +0800 +++ libdrizzle-0.8-patched/libdrizzle/result.c 2010-08-09 14:36:36.540857033 +0800 @@ -115,7 +115,7 @@ return result->con; } -bool drizzle_result_eof(drizzle_result_st *result) +int drizzle_result_eof(drizzle_result_st *result) { return result->options & DRIZZLE_RESULT_EOF_PACKET; } Only in libdrizzle-0.8-patched/libdrizzle: result.c~ diff -u libdrizzle-0.8/libdrizzle/result.h libdrizzle-0.8-patched/libdrizzle/result.h --- libdrizzle-0.8/libdrizzle/result.h 2009-11-06 06:46:41.000000000 +0800 +++ libdrizzle-0.8-patched/libdrizzle/result.h 2010-08-09 14:35:47.958456215 +0800 @@ -66,7 +66,7 @@ * Get EOF flag for a result. */ DRIZZLE_API -bool drizzle_result_eof(drizzle_result_st *result); +int drizzle_result_eof(drizzle_result_st *result); /** * Get information string for a result. Only in libdrizzle-0.8-patched/libdrizzle: result.h~ diff -u libdrizzle-0.8/libdrizzle/row.c libdrizzle-0.8-patched/libdrizzle/row.c --- libdrizzle-0.8/libdrizzle/row.c 2010-01-13 03:50:58.000000000 +0800 +++ libdrizzle-0.8-patched/libdrizzle/row.c 2010-08-09 14:35:09.990731037 +0800 @@ -159,6 +159,13 @@ { drizzle_log_debug(con->drizzle, "drizzle_state_row_read"); + /* XXX: fix hung-up problem encountered in extremely fragmeneted network connection */ + if(con->packet_size != 0 && con->buffer_size == 0) { + drizzle_state_push(con, drizzle_state_read); + return DRIZZLE_RETURN_OK; + } + /* XXX: ends here */ + if (con->packet_size == 5 && con->buffer_ptr[0] == 254) { if (con->buffer_size < 5)