@@ -108,7 +108,7 @@ bool njsAqQueue_createBaton(napi_env env, napi_callback_info info,
108
108
static bool njsAqQueue_createMessage (njsBaton * baton , njsAqQueue * queue ,
109
109
napi_env env , napi_value value , dpiMsgProps * * handle )
110
110
{
111
- napi_value payloadObj , constructor ;
111
+ napi_value payloadObj , constructor , temp ;
112
112
napi_valuetype valueType ;
113
113
dpiMsgProps * tempHandle ;
114
114
bool found , isDbObject ;
@@ -135,14 +135,25 @@ static bool njsAqQueue_createMessage(njsBaton *baton, njsAqQueue *queue,
135
135
NJS_CHECK_NAPI (env , napi_get_named_property (env , value ,
136
136
"payload" , & payloadObj ))
137
137
NJS_CHECK_NAPI (env , napi_typeof (env , payloadObj , & valueType ))
138
+ if (valueType == napi_string )
139
+ break ;
138
140
if (valueType == napi_object ) {
139
141
NJS_CHECK_NAPI (env , napi_instanceof (env , payloadObj ,
140
142
constructor , & isDbObject ))
143
+ if (isDbObject || njsUtils_isBuffer (env , payloadObj ))
144
+ break ;
145
+ if (queue -> payloadObjectType ) {
146
+ NJS_CHECK_NAPI (env , napi_get_reference_value (env ,
147
+ queue -> payloadObjectType -> jsDbObjectConstructor ,
148
+ & constructor ))
149
+ NJS_CHECK_NAPI (env , napi_new_instance (env , constructor ,
150
+ 1 , & payloadObj , & temp ))
151
+ payloadObj = temp ;
152
+ isDbObject = true;
153
+ break ;
154
+ }
141
155
}
142
- if (valueType != napi_string &&
143
- (valueType != napi_object || !isDbObject ||
144
- !njsUtils_isBuffer (env , payloadObj )))
145
- return njsBaton_setError (baton , errInvalidAqMessage );
156
+ return njsBaton_setError (baton , errInvalidAqMessage );
146
157
}
147
158
break ;
148
159
default :
0 commit comments