Browse Source

updated information sent from socks proxy to OUS to be of the format 2 byte len || message of len bytes

cecylia 7 years ago
parent
commit
af4439d6c4
1 changed files with 16 additions and 19 deletions
  1. 16 19
      client/socks5proxy.c

+ 16 - 19
client/socks5proxy.c

@@ -112,11 +112,10 @@ int main(void){
 		printf("Error connecting\n");
 		return 1;
 	}
-	char *message = calloc(1, BUFSIZ);
-	sprintf(message, "POST / HTTP/1.1\r\nContent-Length: %zd\r\n\r\n%s ", strlen(encoded_bytes), encoded_bytes);
-	int32_t bytes_sent = send(ous_in, message, strlen(message), 0);
-	printf("Wrote %d bytes to OUS_in:\n %s\n", bytes_sent, message);
-	free(message);
+        uint16_t len = strlen(encoded_bytes);
+	int32_t bytes_sent = send(ous_in, (unsigned char *) &len, sizeof(uint16_t), 0);
+	bytes_sent += send(ous_in, encoded_bytes, len, 0);
+	printf("Wrote %d bytes to OUS_in: %x\n %s\n", bytes_sent, len, encoded_bytes);
 
 	/* Spawn process to listen for incoming data from OUS 
 	int32_t demux_pipe[2];
@@ -354,12 +353,12 @@ int proxy_data(int sockfd, uint16_t stream_id, int32_t ous_out){
 		goto err;
 	}
 
-	char *message = calloc(1, BUFSIZ);
-	sprintf(message, "POST / HTTP/1.1\r\nContent-Length: %zd\r\n\r\n%s ", strlen(encoded_bytes)+1, encoded_bytes);
-	bytes_sent = send(ous_in, message, strlen(message), 0);
+        uint16_t len = strlen(encoded_bytes);
+	bytes_sent = send(ous_in, (unsigned char *) &len, sizeof(uint16_t), 0);
+	bytes_sent += send(ous_in, encoded_bytes, strlen(encoded_bytes), 0);
 
 #ifdef DEBUG_UPSTREAM
-	printf("Wrote %d bytes to OUS_in: %s\n", bytes_sent, message);
+	printf("Wrote %d bytes to OUS_in: %x %s\n", bytes_sent, len, encoded_bytes);
 #endif
 
 	if(bytes_sent < 0){
@@ -460,12 +459,10 @@ int proxy_data(int sockfd, uint16_t stream_id, int32_t ous_out){
 					goto err;
 				}
 
-				sprintf(message, "POST / HTTP/1.1\r\nContent-Length: %zd\r\n\r\n%s ",
-						strlen( (char *)ebytes)+1, ebytes);
-
-				free(ebytes);
-				bytes_sent = send(ous_in, message, strlen(message), 0);
-				printf("Closing message: %s\n", message);
+                                len = (*buffer_ptr).length;
+                                bytes_sent = send(ous_in, (unsigned char *) &len, sizeof(uint16_t), 0);
+                                bytes_sent += send(ous_in, ebytes, len, 0);
+				printf("Closing message: %s\n", ebytes);
 				close(ous_in);
 
 				goto err;
@@ -516,12 +513,12 @@ int proxy_data(int sockfd, uint16_t stream_id, int32_t ous_out){
 					return 1;
 				}
 
-				sprintf(message, "POST / HTTP/1.1\r\nContent-Length: %zd\r\n\r\n%s ",
-						strlen(encoded_bytes)+1, encoded_bytes);
-				bytes_sent = send(ous_in, message, strlen(message), 0);
+                                len = strlen(encoded_bytes);
+                                bytes_sent = send(ous_in, (unsigned char *) &len, sizeof(uint16_t), 0);
+                                bytes_sent += send(ous_in, encoded_bytes, len, 0);
 
 #ifdef DEBUG_UPSTREAM
-				printf("Sent to OUS (%d bytes):%s\n",bytes_sent, message);
+				printf("Sent to OUS (%d bytes): %x %s\n",bytes_sent, len, message);
 #endif
 				close(ous_in);