@@ -753,6 +753,7 @@ PHP_MINIT_FUNCTION(ibase)
753
753
REGISTER_LONG_CONSTANT ("IBASE_REC_NO_VERSION" , PHP_IBASE_REC_NO_VERSION , CONST_PERSISTENT );
754
754
REGISTER_LONG_CONSTANT ("IBASE_NOWAIT" , PHP_IBASE_NOWAIT , CONST_PERSISTENT );
755
755
REGISTER_LONG_CONSTANT ("IBASE_WAIT" , PHP_IBASE_WAIT , CONST_PERSISTENT );
756
+ REGISTER_LONG_CONSTANT ("IBASE_LOCK_TIMEOUT" , PHP_IBASE_LOCK_TIMEOUT , CONST_PERSISTENT );
756
757
757
758
php_ibase_query_minit (INIT_FUNC_ARGS_PASSTHRU );
758
759
php_ibase_blobs_minit (INIT_FUNC_ARGS_PASSTHRU );
@@ -1146,6 +1147,7 @@ PHP_FUNCTION(ibase_trans)
1146
1147
1147
1148
if (argn > 0 ) {
1148
1149
zend_long trans_argl = 0 ;
1150
+ zend_long trans_timeout = 0 ;
1149
1151
char * tpb ;
1150
1152
ISC_TEB * teb ;
1151
1153
zval * args = NULL ;
@@ -1217,6 +1219,24 @@ PHP_FUNCTION(ibase_trans)
1217
1219
last_tpb [tpb_len ++ ] = isc_tpb_nowait ;
1218
1220
} else if (PHP_IBASE_WAIT == (trans_argl & PHP_IBASE_WAIT )) {
1219
1221
last_tpb [tpb_len ++ ] = isc_tpb_wait ;
1222
+ if (PHP_IBASE_LOCK_TIMEOUT == (trans_argl & PHP_IBASE_LOCK_TIMEOUT )) {
1223
+ if ((i + 1 < argn ) && (Z_TYPE (args [i + 1 ]) == IS_LONG )){
1224
+ i ++ ;
1225
+ convert_to_long_ex (& args [i ]);
1226
+ trans_timeout = Z_LVAL (args [i ]);
1227
+
1228
+ if (trans_timeout <= 0 || trans_timeout > 0x7FFF ) {
1229
+ php_error_docref (NULL , E_WARNING , "Invalid timeout parameter" );
1230
+ } else {
1231
+ last_tpb [tpb_len ++ ] = isc_tpb_lock_timeout ;
1232
+ last_tpb [tpb_len ++ ] = sizeof (ISC_SHORT );
1233
+ last_tpb [tpb_len ] = (ISC_SHORT )trans_timeout ;
1234
+ tpb_len += sizeof (ISC_SHORT );
1235
+ }
1236
+ } else {
1237
+ php_error_docref (NULL , E_WARNING , "IBASE_LOCK_TIMEOUT expects next argument to be timeout value" );
1238
+ }
1239
+ }
1220
1240
}
1221
1241
}
1222
1242
}
0 commit comments