@@ -101,6 +101,13 @@ int mosquitto_lib_cleanup(void)
101
101
return MOSQ_ERR_SUCCESS ;
102
102
}
103
103
104
+ static int alloc_packet_buffer (struct mosquitto * mosq )
105
+ {
106
+ mosq -> in_packet .packet_buffer_size = 4096 ;
107
+ mosq -> in_packet .packet_buffer = mosquitto_calloc (1 , mosq -> in_packet .packet_buffer_size );
108
+ return !mosq -> in_packet .packet_buffer ;
109
+ }
110
+
104
111
struct mosquitto * mosquitto_new (const char * id , bool clean_start , void * userdata )
105
112
{
106
113
struct mosquitto * mosq = NULL ;
@@ -113,13 +120,6 @@ struct mosquitto *mosquitto_new(const char *id, bool clean_start, void *userdata
113
120
114
121
mosq = (struct mosquitto * )mosquitto_calloc (1 , sizeof (struct mosquitto ));
115
122
if (mosq ){
116
- mosq -> in_packet .packet_buffer_size = 4096 ;
117
- mosq -> in_packet .packet_buffer = mosquitto_calloc (1 , mosq -> in_packet .packet_buffer_size );
118
- if (!mosq -> in_packet .packet_buffer ){
119
- mosquitto_FREE (mosq );
120
- errno = ENOMEM ;
121
- return NULL ;
122
- }
123
123
mosq -> sock = INVALID_SOCKET ;
124
124
#ifdef WITH_THREADING
125
125
# ifndef WIN32
@@ -169,6 +169,9 @@ int mosquitto_reinitialise(struct mosquitto *mosq, const char *id, bool clean_st
169
169
mosq -> wsd .is_client = true;
170
170
mosq -> wsd .http_header_size = 4096 ;
171
171
#endif
172
+ if (alloc_packet_buffer (mosq )){
173
+ return MOSQ_ERR_NOMEM ;
174
+ }
172
175
mosq -> transport = mosq_t_tcp ;
173
176
mosq -> protocol = mosq_p_mqtt311 ;
174
177
mosq -> sock = INVALID_SOCKET ;
@@ -305,7 +308,7 @@ void mosquitto__destroy(struct mosquitto *mosq)
305
308
mosquitto_FREE (mosq -> host );
306
309
mosquitto_FREE (mosq -> bind_address );
307
310
mosquitto_FREE (mosq -> in_packet .packet_buffer );
308
- mosq -> in_packet .packet_buffer_size = 0 ;
311
+ mosq -> in_packet .packet_buffer_size = 4096 ;
309
312
310
313
mosquitto_property_free_all (& mosq -> connect_properties );
311
314
0 commit comments