libpurple/protocols/mxit/http.c

branch
release-2.x.y
changeset 37828
60f95045db42
parent 35983
029ab6fae0e6
child 37845
89b326ceca25
equal deleted inserted replaced
37672:5e5e84e8a798 37828:60f95045db42
61 * @param fd The file descriptor 61 * @param fd The file descriptor
62 * @param pktdata The packet data 62 * @param pktdata The packet data
63 * @param pktlen The length of the packet data 63 * @param pktlen The length of the packet data
64 * @return Return -1 on error, otherwise 0 64 * @return Return -1 on error, otherwise 0
65 */ 65 */
66 static int mxit_http_raw_write( int fd, const char* pktdata, int pktlen ) 66 static int mxit_http_raw_write( int fd, const char* pktdata, size_t pktlen )
67 { 67 {
68 int written; 68 size_t written;
69 int res; 69 int res;
70 70
71 written = 0; 71 written = 0;
72 while ( written < pktlen ) { 72 while ( written < pktlen ) {
73 res = write( fd, &pktdata[written], pktlen - written ); 73 res = write( fd, &pktdata[written], pktlen - written );
313 * Create HTTP connection for sending a HTTP request 313 * Create HTTP connection for sending a HTTP request
314 * 314 *
315 * @param session The MXit session object 315 * @param session The MXit session object
316 * @param host The server name to connect to 316 * @param host The server name to connect to
317 * @param port The port number to connect to 317 * @param port The port number to connect to
318 * @param data The HTTP request data (including HTTP headers etc.) 318 * @param header The HTTP header.
319 * @param data The HTTP request data.
319 * @param datalen The HTTP request data length 320 * @param datalen The HTTP request data length
320 */ 321 */
321 void mxit_http_send_request( struct MXitSession* session, char* host, int port, const char* data, int datalen ) 322 void mxit_http_send_request( struct MXitSession* session, char* host, int port, gchar* header, const char* data, size_t datalen )
322 { 323 {
323 PurpleProxyConnectData* con = NULL; 324 PurpleProxyConnectData* con = NULL;
324 struct http_request* req; 325 struct http_request* req;
326 size_t headerlen = strlen( header );
325 327
326 /* build the http request */ 328 /* build the http request */
327 req = g_new0( struct http_request, 1 ); 329 req = g_new0( struct http_request, 1 );
328 req->session = session; 330 req->session = session;
329 req->host = host; 331 req->host = host;
330 req->port = port; 332 req->port = port;
331 req->data = g_malloc0( datalen ); 333 req->data = g_malloc0( headerlen + datalen );
332 memcpy( req->data, data, datalen ); 334 memcpy( req->data, header, headerlen );
333 req->datalen = datalen; 335 memcpy( req->data + headerlen, data, datalen );
336 req->datalen = headerlen + datalen;
334 337
335 /* open connection to the HTTP server */ 338 /* open connection to the HTTP server */
336 con = purple_proxy_connect( NULL, session->acc, host, port, mxit_cb_http_connect, req ); 339 con = purple_proxy_connect( NULL, session->acc, host, port, mxit_cb_http_connect, req );
337 if ( !con ) { 340 if ( !con ) {
338 purple_connection_error_reason( session->con, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _( "Unable to connect" ) ); 341 purple_connection_error_reason( session->con, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _( "Unable to connect" ) );

mercurial