@@ -194,13 +194,16 @@ int packet_write_fmt_gently(int fd, const char *fmt, ...)
194
194
return status ;
195
195
}
196
196
197
- static int packet_write_gently (const int fd_out , const char * buf , size_t size )
197
+ static int do_packet_write (const int fd_out , const char * buf , size_t size ,
198
+ struct strbuf * err )
198
199
{
199
200
char header [4 ];
200
201
size_t packet_size ;
201
202
202
- if (size > LARGE_PACKET_DATA_MAX )
203
- return error (_ ("packet write failed - data exceeds max packet size" ));
203
+ if (size > LARGE_PACKET_DATA_MAX ) {
204
+ strbuf_addstr (err , _ ("packet write failed - data exceeds max packet size" ));
205
+ return -1 ;
206
+ }
204
207
205
208
packet_trace (buf , size , 1 );
206
209
packet_size = size + 4 ;
@@ -215,15 +218,29 @@ static int packet_write_gently(const int fd_out, const char *buf, size_t size)
215
218
*/
216
219
217
220
if (write_in_full (fd_out , header , 4 ) < 0 ||
218
- write_in_full (fd_out , buf , size ) < 0 )
219
- return error (_ ("packet write failed" ));
221
+ write_in_full (fd_out , buf , size ) < 0 ) {
222
+ strbuf_addf (err , _ ("packet write failed: %s" ), strerror (errno ));
223
+ return -1 ;
224
+ }
225
+ return 0 ;
226
+ }
227
+
228
+ static int packet_write_gently (const int fd_out , const char * buf , size_t size )
229
+ {
230
+ struct strbuf err = STRBUF_INIT ;
231
+ if (do_packet_write (fd_out , buf , size , & err )) {
232
+ error ("%s" , err .buf );
233
+ strbuf_release (& err );
234
+ return -1 ;
235
+ }
220
236
return 0 ;
221
237
}
222
238
223
239
void packet_write (int fd_out , const char * buf , size_t size )
224
240
{
225
- if (packet_write_gently (fd_out , buf , size ))
226
- die_errno (_ ("packet write failed" ));
241
+ struct strbuf err = STRBUF_INIT ;
242
+ if (do_packet_write (fd_out , buf , size , & err ))
243
+ die ("%s" , err .buf );
227
244
}
228
245
229
246
void packet_buf_write (struct strbuf * buf , const char * fmt , ...)
0 commit comments